2つのコレクションの変更を検索する

おやすみなさい、コミュニティ。



私が取り組んでいる現在のプロジェクトでは、2つのデータコレクションの変更を識別する必要があります。 一言で言えば、注文のリストはサーバーから取得され、データベースには同じ注文のリストが含まれます。 新しいコレクションで追加、更新、削除された注文の数を判断する必要があります。 猫の下で興味を持ってください。







あなたが言うささいな仕事のようで、あなたは正しいでしょう! しかし、私は3日間寝ていないので、最初は3サイクルでコードが判明しました。 でたらめでたらめ私は考えてやり直しました。 私もコードを与えません:)



30分後、クラスが2サイクルで誕生しました。新しいデータを調べて、新しいデータと更新されたデータを検討し、古いデータを調べて、削除されたデータを検討します。 すぐにすべてを1サイクルに収めたいと思ったため、コードも提供しません。1つの記事のアドバイスに基づいて、作成したクラスを削除しました。



それで、さらに30分後、CollectionChangeCounerクラスを作成しました。このアルゴリズムは、私の意見では最適です。



リスティング
import java.util.Iterator; import java.util.List; /** * Created by vitaliy on 18.03.2016. * */ public class CollectionChangeCouner<T> { private int inserted; private int updated; private int deleted; public CollectionChangeCouner(List<T> oldData, List<T> newData) { Iterator<T> oldDataIterator = oldData.iterator(); while (oldDataIterator.hasNext()) { T oldItem = oldDataIterator.next(); int index = newData.indexOf(oldItem); if (index < 0) { deleted++; oldDataIterator.remove(); } else { final T newItem = newData.get(index); if (!oldItem.equals(newItem)) { updated++; } newData.remove(index); } } inserted = newData.size(); } public int inserted() { return inserted; } public int updated() { return updated; } public int deleted() { return deleted; } public boolean hadChangedData() { return (inserted > 0) || (updated > 0) || (deleted > 0); } }
      
      









それだけです:)

誰かが私のミニ記事で何かを手伝ってくれることを願っています。あるいは、賢くておいしい人があなたにもっと良い選択肢を教えてくれることを願っています。 しかし、私は明日それについて読むことを恐れています。



PSより頻繁にスリープ、これは便利です!



All Articles