在list集合当中,有两种长度的元素,怎么分别取出来,长度不固定
时间: 2024-02-27 13:51:58 浏览: 61
java实现把一个List集合拆分成多个的操作
如果需要根据元素的某种属性将list集合中的元素分成不同的组,而且这些属性的取值是不固定的,可以使用Java 8的Stream API来实现。
下面是一个示例代码,其中假设list集合中的元素类型为自定义的Java Bean类型:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
```java
List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 20));
persons.add(new Person("Bob", 25));
persons.add(new Person("Charlie", 30));
persons.add(new Person("David", 35));
Map<Boolean, List<Person>> result = persons.stream()
.collect(Collectors.partitioningBy(p -> p.getAge() > 30));
List<Person> youngPeople = result.get(false);
List<Person> oldPeople = result.get(true);
System.out.println("Young people: " + youngPeople);
System.out.println("Old people: " + oldPeople);
```
上述代码中,使用Java 8的Stream API实现了将Person类型的集合根据年龄分成两组的功能。其中,使用`partitioningBy()`方法将集合分成两组,第一个参数为分组条件,本例中为`p -> p.getAge() > 30`,表示年龄大于30的人属于一组,第二个参数为`Map<Boolean, List<Person>>`类型,表示分组的结果为一个Map类型,其中key为Boolean类型,表示分组的结果的类型,value为List<Person>类型,表示分组的结果的元素类型。最后通过`get()`方法获取分组的结果。
阅读全文