java8 stream 由一个list转化成另一个list案例
时间: 2023-05-04 18:02:04 浏览: 934
Java8中的Stream是一个强大的API,它为开发人员提供了一种简单的方式来处理集合中的元素。下面我们将介绍一个将一个List转换成另一个List的案例。
假设我们有一个包含学生信息的List,每个学生都有姓名和年龄两个属性,我们需要将这个List中的学生信息转换成包含学生姓名的List。
在Java8中,我们可以通过以下代码实现这一转换:
List<Student> students = Arrays.asList(new Student("张三", 18), new Student("李四", 19), new Student("王五", 20));
List<String> names = students.stream().map(Student::getName).collect(Collectors.toList());
其中,我们首先将原始的List转换成了一个Stream对象,然后使用map方法对每个学生对象进行转换,将每个学生对象的姓名属性提取出来。最后,我们使用collect方法将转换后的数据收集起来,并将其存储在一个新的List中。
通过这种方式,我们可以方便地将一个List中的元素转换为另一个List,并可以根据需要对每个元素进行自定义的操作,实现各种复杂的业务需求。
相关问题
java stream实现 list根据另一个list排序
使用Java 8中的Stream API,同样可以实现根据另一个List排序的功能。可以使用Stream的sorted()方法结合Comparator自定义排序规则来实现:
```java
List<String> sortList = new ArrayList<>();
sortList.add("apple");
sortList.add("banana");
sortList.add("orange");
sortList.add("pear");
List<String> referenceList = new ArrayList<>();
referenceList.add("pear");
referenceList.add("apple");
referenceList.add("banana");
referenceList.add("orange");
List<String> sortedList = sortList.stream()
.sorted(Comparator.comparingInt(referenceList::indexOf))
.collect(Collectors.toList());
System.out.println(sortedList);
```
上述代码中,使用Stream的sorted()方法对需要排序的List进行排序,其中传入了一个自定义的Comparator对象,该对象的compare()方法中根据排序参照的List中元素的索引来比较需要排序的List中元素的大小关系,最终实现了按照参照List中元素的顺序进行排序的功能。最后通过collect()方法将排序后的元素重新收集到一个List中。
java stream 从一个list去除另一个list的元素
假设有两个List对象,分别为list1和list2,可以使用Java 8中的Stream API通过以下方式从list1中去除list2中的元素:
```java
List<String> list1 = Arrays.asList("A", "B", "C", "D");
List<String> list2 = Arrays.asList("B", "D");
List<String> result = list1.stream()
.filter(item -> !list2.contains(item))
.collect(Collectors.toList());
System.out.println(result); // 输出结果为 [A, C]
```
在这个例子中,我们使用了Stream中的filter方法,过滤掉了list1中与list2重复的元素,最后将结果收集到一个新的List中。注意,这里假设List中元素类型为String,如果是其他类型需要做相应的修改。