本文共 5025 字,大约阅读时间需要 16 分钟。
因为太多了,这里列举几种比较常用的:
1)遍历list 2)遍历list得到map 3)遍历list,根据某个key进行分组 4)遍历多个对象,合并多个对象中的明细行 5)foreach:遍历操作,无返回值 6)distrinct:去重操作 7)filter:过滤,返回filter方法体中为true的对象首先引入guaua包和fastjson包,方便打印:
com.google.guava guava 19.0 com.alibaba fastjson 1.2.60
1)代码示例:
package com.test;import com.alibaba.fastjson.JSON;import com.google.common.base.Joiner;import com.sun.scenario.effect.Identity;import org.junit.Test;import java.lang.reflect.Array;import java.util.*;import java.util.function.Function;import java.util.stream.Collectors;public class JDK8Test { class A{ private String id; private String name; private List lines; public List getLines() { return lines; } public void setLines(List lines) { this.lines = lines; } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public String getId() { return id; } public String getName() { return name; } } /*** * 遍历list */ @Test public void testList(){ List list = new ArrayList<>(); A a = new A(); a.setId("1"); a.setName("张三"); A a2 = new A(); a2.setId("2"); a2.setName("李四"); list.add(a); list.add(a2); ListidList = list.stream().map(A::getId).collect(Collectors.toList()); System.out.println(Joiner.on(",").join(idList)); //运行结果:1,2 } /*** * 遍历list分组得到map */ @Test public void testGetMap(){ List list = new ArrayList<>(); A a = new A(); a.setId("1"); a.setName("张三"); A a2 = new A(); a2.setId("2"); a2.setName("李四"); list.add(a); list.add(a2); MapidList = list.stream().collect(Collectors.toMap(A::getId,A::getName)); Map list = new ArrayList<>(); A a = new A(); a.setId("1"); a.setName("张三"); a.setId("1"); a.setName("王五"); A a2 = new A(); a2.setId("2"); a2.setName("李四"); list.add(a); list.add(a2); MapaList = list.stream().collect(Collectors.toMap(A::getId, Function.identity())); System.out.println(idList.toString()); System.out.println(JSON.toJSONString(aList)); //运行结果: //{1=张三, 2=李四} //{"1":{"id":"1","name":"张三"},"2":{"id":"2","name":"李四"}} } /*** * 遍历list,根据id进行分组 */ @Test public void testGroupMap(){ List > idList = list.stream().collect(Collectors.groupingBy(A::getId)); System.out.println(JSON.toJSONString(idList)); //运行结果: //{"1":[{"id":"1","name":"王五"}],"2":[{"id":"2","name":"李四"}]} } /*** * flatmap合并用法 */ @Test public void testFlatMap(){ A a = new A(); a.setName("name1"); a.setId("1"); A a2 = new A(); a2.setName("name2"); a2.setId("2"); List list1 = new ArrayList<>(); list1.add(a); list1.add(a2); A a3 = new A(); a3.setName("name3"); a3.setId("3"); A a4 = new A(); a4.setName("name4"); a4.setId("4"); List list2 = new ArrayList<>(); list2.add(a3); list2.add(a4); //对象A1 A test1 = new A(); A test2 = new A(); test1.setLines(list1); test2.setLines(list2); List list = new ArrayList<>(); list.add(test1); list.add(test2); List allList = list.stream().map(A::getLines).flatMap(Collection::stream).collect(Collectors.toList()); System.out.println(JSON.toJSONString(allList)); //运行结果: //[{"id":"1","name":"name1"},{"id":"2","name":"name2"},{"id":"3","name":"name3"},{"id":"4","name":"name4"}] }}
当前还有很多其他的用法:
1)foreach:遍历操作,无返回值 2)distrinct:去重操作 3)filter:过滤,返回filter方法体中为true的对象我们写一段代码来一次性演示3种用法:
@Test public void testForeach(){ A a = new A(); a.setId("1"); a.setName("1"); A a2 = new A(); a2.setId("1"); a2.setName("2"); A a3 = new A(); a3.setId("3"); a3.setName("3"); List list = new ArrayList<>(); list.add(a); list.add(a2); list.add(a3); //foreach操作: list.forEach(item->{ System.out.println(item.getName()); }); //distinct操作: ListidList = list.stream().map(A::getId).distinct().collect(Collectors.toList()); System.out.println(Joiner.on(",").join(idList)); //filter操作: List aList = list.stream().filter(item->!"1".equals(item.getId())).collect(Collectors.toList()); System.out.println(JSON.toJSONString(aList)); }
运行结果:
1231,3[{ "id":"3","name":"3"}]
只记录一点用法吧,很多其他用法都是想通的;
转载地址:http://tikmi.baihongyu.com/