java - 选择 X 类 ArrayList 的不同字段

标签 java performance arraylist

我有一个 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/

相关文章:

java - 使用@Mock 和@InjectMocks

android - ORMLite 创建或更新似乎很慢 - 正常速度是多少?

java - 获取乘客名单并将他们安排到座位上。数组列表

sql - SQL 函数与代码函数的性能

java - ArrayList 中的元素如何工作?

java - 元素的 ArrayList 链接并获取 IndexOutOfBoundsException

java - 为什么整数类缓存值在 -128 到 127 范围内?

java - Hibernate 4.0 的事务锁定问题

java - 无法将外部 .jar 库导入 Eclipse 上的 Android 项目

python - 我的函数的性能从字典中删除作为其他键的子字符串的键