文字列の長さと属性に応じてストリームをフィルタリングする

a_ray_of_hope:

したがって、1つのクラスと1つのEnumがあります。Enumは、例えば:

public enum E {
 E1, E2, E3
}

クラス:

public class A {  
 private E e;
 private String name;

 public A (E e, String name){
  this.e = e;
  this.name = name;
 }
 public E getE(){
  return E;
 }
 public String getName(){
  return name;
 }
}

リスト<A>です。私が欲しいのは、名前と列挙型属性に応じてリストを(ストリームで)フィルタリングすることです。フィルターされるのは、同じ列挙型属性を持つ他のオブジェクトと比較して、名前の長さが最大でないAのみです。

出力はMap <E、List <A >>である必要があります。同じ名前の長さのオブジェクトが複数存在する可能性があるため、リストしてください。

サンプル:

List<A> input = Arrays.asList(new A(E.E1, "abcd"), new A(E.E1, "xyz"), new A(E.E2, "abcd"), new A(E.E2, "wxyz"), new A(E.E3, "xyzb"));

これは返されるはずです:

E1 = "abcd" // because "xyz" has length 3
E2 = "abcd", "wxyz" // as both have length 4, e.g. max length
E3 = "xyzb" // because it is the only object

私の解決策の1つは、「groupingBy」を使用してリストをそれぞれの列挙型グループにグループ化できることです。最後に、たとえば、Aのリストを値として持つ3つのキーがあります。最終的には、名前の最大長より短い名前を持つすべての値を削除する必要があります。しかし、それぞれのキーでのみ

名前:

あなたは、ネストされたを使用して起動することができますgroupingBy属性によってグループ化されたことを確認するEことにより、さらにlengthnameでグループ化している間、名前の長さのエントリのみに関心nameがあるため、にまとめることができTreeMapますmaxこれは、EをlastEntryTreeMapの値にさらにマッピングできるようにするためです

上記のアプローチによるソリューションは次のようになります。

Map<E, List<A>> output = input.stream()
        .collect(Collectors.groupingBy(A::getE,
                Collectors.groupingBy(e -> e.getName().length(),
                        TreeMap::new, Collectors.toList()))) // Map<E, TreeMap<Integer, List<A>>> // the nested groupings
        .entrySet().stream()
        .collect(Collectors.toMap(Map.Entry::getKey,
                m -> m.getValue().lastEntry().getValue())); // only max length entry mapped here

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列内の出現に応じてリストをフィルタリングする方法

分類Dev

文字列のリストのリストをフィルタリングして、特定の長さの文字列のリストのリストを取得します

分類Dev

列に応じてデータフレーム行をフィルタリングする

分類Dev

複数の列を条件とし、列の値に応じて条件が異なるデータフレームのフィルタリング

分類Dev

文字列のリストに基づいてパンダのデータフレームをフィルタリングする

分類Dev

Pyspark:文字列とプレフィックスの欠如に基づいてデータフレームをフィルタリングする方法は?

分類Dev

文字列の長さに基づいて行名をフィルタリングする

分類Dev

リスト内の部分的な文字列に基づいてパンダ(python)データフレームをフィルタリングする

分類Dev

同じリストpythonのより長い要素で発生するリスト内の文字列要素をフィルタリングする方法は?

分類Dev

Laravelのモデルに基づいてリクエストに応じてユーザーのアクセスをフィルタリングする

分類Dev

エントリの長さに基づいてパンダのデータフレームをフィルタリングする方法

分類Dev

どのように別のsreamに含まれていない1つのストリームから文字列をフィルタリングするには?

分類Dev

Javaで複数のパラメータに応じて、リスト上のデータをフィルタリングするには?

分類Dev

データをフィルタリング/ソートする必要性に応じて、いつデータベースを使用するのですか?

分類Dev

列内の文字列に基づいてデータフレームをフィルタリングする

分類Dev

AngularJSでフィルタリングされたリストと制限されたリストの長さが同じかどうかを確認する方法

分類Dev

ネストされたデータフレーム(リスト列)をpurrrを使用してリスト内の値でフィルタリングする

分類Dev

ストリームを使用すると、条件に基づいて最大値のリストがフィルタリングされます

分類Dev

purrrを使用して、ネストされたデータフレーム列のデータに基づいてフィルタリングする

分類Dev

データフレーム内の文字列の存在によって行をフィルタリングする

分類Dev

ラムダを使用して文字列のリストをフィルタリングする

分類Dev

異なる長さのリストを新しい列としてデータフレームに追加する

分類Dev

列のリストに対してORステートメントを使用してPandasデータフレームをフィルタリングする

分類Dev

パンダは、DataFrame.queryを使用して、文字列の長さに基づいて文字列データをフィルタリングします

分類Dev

リスト値に基づいてデータフレーム列をフィルタリングする

分類Dev

リストに基づいてデータフレーム列をフィルタリングする

分類Dev

文字列のリストを動的にフィルタリングする

分類Dev

ランダムなコンマとスペースの文字列をフィルタリングする

分類Dev

配列の長さに応じてドキュメントフィールドをインクリメントします

Related 関連記事

  1. 1

    文字列内の出現に応じてリストをフィルタリングする方法

  2. 2

    文字列のリストのリストをフィルタリングして、特定の長さの文字列のリストのリストを取得します

  3. 3

    列に応じてデータフレーム行をフィルタリングする

  4. 4

    複数の列を条件とし、列の値に応じて条件が異なるデータフレームのフィルタリング

  5. 5

    文字列のリストに基づいてパンダのデータフレームをフィルタリングする

  6. 6

    Pyspark:文字列とプレフィックスの欠如に基づいてデータフレームをフィルタリングする方法は?

  7. 7

    文字列の長さに基づいて行名をフィルタリングする

  8. 8

    リスト内の部分的な文字列に基づいてパンダ(python)データフレームをフィルタリングする

  9. 9

    同じリストpythonのより長い要素で発生するリスト内の文字列要素をフィルタリングする方法は?

  10. 10

    Laravelのモデルに基づいてリクエストに応じてユーザーのアクセスをフィルタリングする

  11. 11

    エントリの長さに基づいてパンダのデータフレームをフィルタリングする方法

  12. 12

    どのように別のsreamに含まれていない1つのストリームから文字列をフィルタリングするには?

  13. 13

    Javaで複数のパラメータに応じて、リスト上のデータをフィルタリングするには?

  14. 14

    データをフィルタリング/ソートする必要性に応じて、いつデータベースを使用するのですか?

  15. 15

    列内の文字列に基づいてデータフレームをフィルタリングする

  16. 16

    AngularJSでフィルタリングされたリストと制限されたリストの長さが同じかどうかを確認する方法

  17. 17

    ネストされたデータフレーム(リスト列)をpurrrを使用してリスト内の値でフィルタリングする

  18. 18

    ストリームを使用すると、条件に基づいて最大値のリストがフィルタリングされます

  19. 19

    purrrを使用して、ネストされたデータフレーム列のデータに基づいてフィルタリングする

  20. 20

    データフレーム内の文字列の存在によって行をフィルタリングする

  21. 21

    ラムダを使用して文字列のリストをフィルタリングする

  22. 22

    異なる長さのリストを新しい列としてデータフレームに追加する

  23. 23

    列のリストに対してORステートメントを使用してPandasデータフレームをフィルタリングする

  24. 24

    パンダは、DataFrame.queryを使用して、文字列の長さに基づいて文字列データをフィルタリングします

  25. 25

    リスト値に基づいてデータフレーム列をフィルタリングする

  26. 26

    リストに基づいてデータフレーム列をフィルタリングする

  27. 27

    文字列のリストを動的にフィルタリングする

  28. 28

    ランダムなコンマとスペースの文字列をフィルタリングする

  29. 29

    配列の長さに応じてドキュメントフィールドをインクリメントします

ホットタグ

アーカイブ