JAva 8プロパティ--listコレクションは複数のフィールドに基づいて再ロードされます


大神の人工知能のチュートリアルを強くお勧めします.http://www.captainbed.net/zhanghan
プロジェクト要件の説明
プロジェクトの必要性から、1つのlistがあり、エンティティには複数のフィールドが含まれており、そのうちの2つのフィールドが同じである場合、listの2つのレコードは同じであると考えられています.パケットによって実現したいと思っていましたが、java 8のパケットは1つのフィールドに基づいてパケットを提供するだけで、別の道を探すしかありません.java 8にはcollectingAndThenがあり、複数のフィールドに基づいて再利用することができます.私たちのニーズは再利用した後に操作することができるだからこの方式を採用します.
グループ化および重量除去
  • パケット
  • classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));
    
  • java 8デジュン(学年と専攻によって学年と専攻が同じ場合は重複データとみなされる)
  • List distinctClass = classEntities.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getProfessionId() + ";" + o.getGrade()))), ArrayList::new));
    
  • hashSetによる重量除去(classNamesを重量除去するなど):この重量除去がbeanと完全に同じである場合、重複データ
  • を計算する
    List classNameList = new ArrayList(new HashSet(classNames));