我有一个 X 类的 ArrayList。
ArrayList<X> items = new ArrayList();
类X包含多个字段,全部为字符串类型。 (ID、描述、品牌...)
那么如果我想获得这个类的 ArrayList,它只包含给定字段的不同值,我该怎么办?
实践中:
如何获得包含所有品牌但不重复的 X 类 ArrayList? (获取 items
中的所有品牌,但两次都没有品牌)
或者是否有更好/更有效的方法来仅获取品牌列表?
\e: 我不使用 Java8。
希望这不会太令人困惑。
最佳答案
items.stream()
.collect(Collectors.groupingBy(X::getBrand)) // group your items by brand
.values().stream() // stream map values
.map(e->e.get(0)) // for each brand get first element in brand list
.collect(Collectors.toList());
如果你不能使用java 8/streams
Map<String,List<X>> map = new HashMap<>();
for(X item : items){
if(!map.containsKey(item.getBrand())){
map.put(item.getBrand(), new ArrayList<>());
}else{
map.get(item.getBrand()).add(item);
}
}
List<X> result = new ArrayList<>();
for(Map.Entry<String,List<X>> e : map.entrySet()){
result.add(e.getValue().get(0));
}
关于java - 选择 X 类 ArrayList 的不同字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55724554/