【问题标题】:How can I convert ArrayList<String> to ArrayList<Object> using .collect(Collectors.toList() in Java stream如何在 Java 流中使用 .collect(Collectors.toList() 将 ArrayList<String> 转换为 ArrayList<Object>
【发布时间】:2021-02-13 05:03:22
【问题描述】:

如何在 Java 流中使用 .collect(Collectors.toList()ArrayList&lt;String&gt; 转换为 ArrayList&lt;Object&gt;

我之前用过

CommonList = detailUtils.SelectIDValueGetterObservable(getActivity()).stream()
                .forEach(i -> CommonList.add(new foo(i));`

但是我发现了这些副作用

https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html

建议.collect(Collectors.toList()

我们该怎么做

【问题讨论】:

    标签: java arraylist java-stream


    【解决方案1】:

    这比您想象的要容易。只需调用addAll

    List<String> strList = new ArrayList<>();
    strList.add("hello");
    strList.add("world");
    
    List<Object> genericList =new ArrayList<>();
    genericList.addAll(strList);
    System.out.println(genericList);  //--> [hello,world]
    

    小心,因为这也可能很危险......

    List<Integer> intList = new ArrayList<>();
    intList.add(1);
    intList.add(2);
    genericList.addAll(intList); //yeah, ok
    
    boolean[] boolArray = new boolean[5];
    genericList.add(boolArray);    //why not
    genericList.add(false);        //no worries, it will cast it to Boolean
    genericList.add(genericList);  //so inclusive!
    
    System.out.println(genericList);   
    //diversity badge achieved!-> [hello,world,1,2,[Z@232204a1,false,(this Collection)]
    

    【讨论】:

      【解决方案2】:

      如果你想使用 lambda,你可以使用map 方法。

      喜欢这个

      Stream.of("A", "B").map(e -> (Object) e).collect(Collectors.toList())
      

      【讨论】:

        【解决方案3】:

        你不能“转换”它(即改变它的类型),但你可以:

        List<Object> list = new ArrayList<>(myStringList);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-31
          • 2014-05-16
          • 1970-01-01
          • 2014-05-09
          • 1970-01-01
          • 2012-07-22
          • 2021-07-25
          相关资源
          最近更新 更多