【发布时间】:2025-11-27 05:25:01
【问题描述】:
使用 Google Guava (Google Commons),有没有办法将两个大小相同的列表合并为一个列表,新列表包含两个输入列表的复合对象?
例子:
public class Person {
public final String name;
public final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "(" + name + ", " + age + ")";
}
}
和
List<String> names = Lists.newArrayList("Alice", "Bob", "Charles");
List<Integer> ages = Lists.newArrayList(42, 27, 31);
List<Person> persons =
transform with a function that converts (String, Integer) to Person
System.out.println(persons);
会输出:
[(Alice, 42), (Bob, 27), (Charles, 31)]
【问题讨论】:
-
为什么需要专门的函数,为什么不自己写一个简单的呢?
-
Guava 可以提供的任何东西都比直接的
for循环使用起来更复杂,无论如何,这很简单。 -
您有什么没有告诉我们的吗?您引用的示例,期望外部库了解您的
Person类的任何信息有点荒谬...做您想做的事情所需的反射量会比给出的相当明显的答案减慢得多下面。 -
@dcsohl 请参阅code.google.com/p/guava-libraries/issues/detail?id=677 了解这可能会有什么用处
-
@arshajii 因为它是标准的函数式东西,而 Guava 支持一些函数式构造。