gpt4 book ai didi

java - 容器的投影,即将 List 转换为 List 的方法
转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:39 26 4
gpt4 key购买 nike

我有一个对象列表,比方说 List<Example>类 Example 有一个成员 a,它是一个字符串:

class Example {
String a;
String b;
}

现在我想从List<Example>得到至 List<String>通过仅使用列表中每个成员的 a 元素。

当然,使用循环很容易做到这一点,但我试图找到类似于 C++ 中的算法的东西,可以直接做到这一点。

问题:从List到List的投影最简单的方法是什么,其中的值是字段aExample


编辑:这就是我所说的 for 循环:

List<String> result = new ArrayList<String>();
for(Example e : myList)
result.add(e.a);
return result;

最佳答案

这是一个使用 Java 8 的声明式流映射的简单解决方案:

class Example {
String a;
String b;
// methods below for testing
public Example(String a) {
this.a = a;
}
public String getA() {
return a;
}
@Override
public String toString() {
return String.format("Example with a = %s", a);
}
}
// initializing test list of Examples
List<Example> list = Arrays.asList(new Example("a"), new Example("b"));

// printing original list
System.out.println(list);

// initializing projected list by mapping
// this is where the real work is

List<String> newList = list
// streaming list
.stream()
// mapping to String through method reference
.map(Example::getA)
// collecting to list
.collect(Collectors.toList());

// printing projected list
System.out.println(newList);

输出

[Example with a = a, Example with a = b]
[a, b]

文档

  • Java 8 流上的通用包 API here
  • Stream#map 方法的特定 API here

关于java - 容器的投影,即将 List<Object> 转换为 List<Object.Member> 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917199/

26 4 0