パッケージtop.dszy.test.java8。 輸入 java.utilの。* ; 輸入java.util.stream.Collectors。 パブリック クラスTest1を{ 公共 静的 ボイドメイン(文字列[]引数){ リスト <のLinkedHashMap <文字列、オブジェクトリスト>> = 新規のArrayList <> (); list.add(新規のLinkedHashMap <文字列オブジェクト> (){{ プット( "ID"、 "A" ); (プット "年齢"、 "13" ); (プット "性別"、 "男" ); }} ); リスト。LinkedHashMap <文字列オブジェクト> (){{ プット( "ID"、 "A" )。 プット( "年齢"、 "14" ); プット( "性別"、 "男" )。 }})。 list.add(新規のLinkedHashMap <文字列オブジェクト> (){{ プット( "ID"、 "B" ); (プット "年齢"、 "14" ); (プット "性別"、 "男" ); }} ); list.add(新しいのLinkedHashMap <文字列、オブジェクト> (){{ プット( "ID"、 "C" )。 プット( "年齢"、 "14"); プット( "性別"、 "男" )。 }})。 list.add(新規のLinkedHashMap <文字列オブジェクト> (){{ プット( "ID"、 "" ); (プット "年齢"、 "14" ); (プット "性別"、 "男" ); }}) ; list.add(新しいのLinkedHashMap <文字列、オブジェクト> (){{ プット( "ID"、 "C" ); (置く "年齢"、 "14" ); (置く "性別"、 "男" )。 }})。 handleRepeatPrimaryKey(リスト、 "ID" ); リスト <のLinkedHashMap <文字列、オブジェクト>> hasList = 新しい ArrayListを<> (); hasList = list.stream()フィルタ- (!X> x.get( "ID")をのtoString()に等しい( ""。。 ()(Collectors.toList)を収集))。 リスト <のLinkedHashMap <文字列、オブジェクト>> notHasList = 新しい ArrayListを<> (); notHasList。 - (> x.get( "ID")のtoString()に等しい( "" X = list.stream()フィルタ;))を収集(Collectors.toList())。 System.out.println(hasList)。 System.out.println(notHasList)。 } パブリック 静的リスト<のLinkedHashMap <文字列、オブジェクト>>リスト、文字列ID){ リスト <のLinkedHashMap <文字列オブジェクト>> itemListの= 新規のArrayList <> (); 用(のLinkedHashMap <文字列、オブジェクト> LHM:リスト){ 場合(itemList.size()== 0 ){ itemList.add(LHM)。 } 他{ 反復子 <のLinkedHashMap <文字列オブジェクト>>反復子= itemList.listIterator()。 一方、(listIterator.hasNext()){ 場合(listIterator.next()。得る(ID).toString()。等号(lhm.get(ID).toString())){ lhm.put(ID、 "" } 他{ listIterator.add(LHM)。 } } } } 戻り値のリスト。 } }
繰り返し処理の主キーは、最初の残りの主キーは空白になって取り、ああ、私はニーズを満たすことができます。私はより良い方法はありませんか分からないのですか?