【问题标题】:Split a single Array List into mutiple array list based on a condition in the attribute using Java 8使用 Java 8 根据属性中的条件将单个数组列表拆分为多个数组列表
【发布时间】:2023-02-10 17:01:01
【问题描述】:

我有一个如下所示的数组列表:

List<Person> person = Arrays.asList(
       new Person(1, "ABC", 001, "I have apples")
       new Person(2, "CDE", 002, "I have Banana")
       new Person(3, "FGH", 003, "I have Oranges")
       new Person(4, "IJK", 004, "I have apples")
       new Person(5, "LMN", 005, "I have Banana")
);

我需要将这个列表分成苹果列表、香蕉列表和橙子列表。 如何在 Java 8 中执行此操作?

期待java8中的答案

【问题讨论】:

  • 是的,这就像家庭作业或工作面试的复制粘贴,特别是如果您指定所需的 java 版本。我们期待的是你的一些努力,你认为你在这里需要什么?此外,您没有该列表,因为您提供的代码永远不会编译。

标签: java data-structures java-8


【解决方案1】:

您可以使用 Collectors.groupingBy 轻松做到这一点:

personList.stream().collect(Collectors.groupingBy(Person::getType))

【讨论】:

    【解决方案2】:

    如果类人:

    class Person {
        int id;
        String p1;
        String p2;
        String p3;
        Person(int id, String p1, String p2, String p3) {
            this.id = id;
            this.p1 = p1;
            this.p2 = p2;
            this.p3 = p3;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "id=" + id +
                    ", p1='" + p1 + ''' +
                    ", p2='" + p2 + ''' +
                    ", p3='" + p3 + ''' +
                    '}';
        }
    }
    

    使用 collect 和 Collectors.groupingBy

    List<Person> person = Arrays.asList(
                    new Person(1, "ABC", "001", "I have apples"),
                    new Person(2, "CDE", "002", "I have Banana"),
                    new Person(3, "FGH", "003", "I have Oranges"),
                    new Person(4, "IJK", "004", "I have apples"),
                    new Person(5, "LMN", "005", "I have Banana")
            );
            Map<String, List<Person>> groupPerson = person.stream().collect(Collectors.groupingBy(a -> a.p3.substring(7)));
    
            System.out.println(groupPerson);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2020-03-21
      相关资源
      最近更新 更多