是的,可以使用Java 8引入的Stream API来缩短这些命令。Stream API提供了一种流式处理集合数据的方式,可以通过一系列的操作来处理数据,从而避免了显式的循环和临时集合的创建。
在这个问题中,如果你想避免重复给每个所有者提供list.add,可以使用Stream API的collect方法来实现。具体步骤如下:
List.stream()
方法来实现。Collectors.groupingBy
方法按照所有者进行分组,这样可以将相同所有者的元素放在同一个列表中。Collectors.toList()
方法将分组后的结果转换为一个列表。下面是具体的代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Owner> owners = new ArrayList<>();
owners.add(new Owner("Alice", "item1"));
owners.add(new Owner("Bob", "item2"));
owners.add(new Owner("Alice", "item3"));
owners.add(new Owner("Bob", "item4"));
Map<String, List<Owner>> ownerMap = owners.stream()
.collect(Collectors.groupingBy(Owner::getName));
System.out.println(ownerMap);
}
}
class Owner {
private String name;
private String item;
public Owner(String name, String item) {
this.name = name;
this.item = item;
}
public String getName() {
return name;
}
public String getItem() {
return item;
}
@Override
public String toString() {
return "Owner{" +
"name='" + name + '\'' +
", item='" + item + '\'' +
'}';
}
}
运行以上代码,输出结果如下:
{Bob=[Owner{name='Bob', item='item2'}, Owner{name='Bob', item='item4'}], Alice=[Owner{name='Alice', item='item1'}, Owner{name='Alice', item='item3'}]}
在这个例子中,我们使用Stream API的groupingBy
方法按照所有者进行了分组,得到了一个以所有者名字为键,以对应所有者对象列表为值的Map。这样,你就可以通过所有者名字来获取对应的所有者对象列表,而无需重复使用list.add
方法。
希望以上回答能够满足你的需求。如果有任何疑问,请随时提问。
没有搜到相关的文章