【问题标题】:Join a Map of String, List into a single List excluding the String将字符串映射,列表加入到单个列表中,不包括字符串
【发布时间】:2021-11-16 09:41:54
【问题描述】:

我有一个Map<String, List<MyObject> myMap。如何将所有 List 值加入一个 List<MyObject>,不包括 String 键?

我试过了

List<MyObject> list = new ArrayList<MyObject>(myMap.values())

但这不适用于集合。

还想过只遍历地图并将每个列表加入一个新列表,但希望有更好的方法。

【问题讨论】:

    标签: java stream collectors


    【解决方案1】:

    这是一种可能的流方式

    map.values().stream().flatMap(Collection::stream).collect(Collectors.toList())
    

    【讨论】:

      【解决方案2】:

      我有一个样本,它可能对你有帮助:

          public class App {
          
              public static void main(String[] args) {
                  test();
              }
          
              private static void test() {
                  Map<String, List<Test>> map = new HashMap<>();
                  List<Test> test = new ArrayList<>();
                  test.add(new Test(1, "AAA"));
                  test.add(new Test(2, "BBB"));
                  map.put("A", test);
                  test = new ArrayList<>();
                  test.add(new Test(3, "CCC"));
                  test.add(new Test(4, "DDD"));
                  map.put("B", test);
          
                  System.out.println(map);
                  List<Test> testList = new ArrayList<>();
                  map.values().stream().forEach(tests -> tests.forEach(testData -> testList.add(testData)));
                  System.out.println(testList);
              }
          }
      
      class Test {
          private int id;
          private String name;
      
          //getter setters
      }
      

      【讨论】:

        猜你喜欢
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多