Java 流操作
public class JDK8Test { @Test public void test1() { System.err.println("======================集合排序======================"); List<People> list = getPeopleList(); list.sort((a,b) -> a.getAge()-b.getAge()); System.out.println(list); } @Test public void test2() { System.err.println("======================数据重构======================"); String longStr = "152,135,1561,121,131513,545,4566,1321,1321,151515"; List<Integer> result1 = Arrays.stream(longStr.split(",")).map(s-> Integer.parseInt(s.trim())).collect(Collectors.toList()); System.out.println(result1); List<People> list = getPeopleList(); String result2 = list.stream().map(p->p.getName()).collect(Collectors.joining(",", "{", "}")); System.out.println(result2); } @Test public void test3() { System.err.println("======================求最大值======================"); final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点 List<People> list = getPeopleList(); Optional<People> people = list.stream().max((a,b) -> a.getAge()-b.getAge()); System.out.println(people.get()); int max = list.stream().mapToInt(p->p.getAge()).max().getAsInt(); System.out.println("最大值:"+max); int min = list.stream().mapToInt(p->p.getAge()).min().getAsInt(); System.out.println("最小值:"+min); int sum = list.stream().mapToInt(p->p.getAge()).sum(); System.out.println("求和值:"+sum); double ave = list.stream().mapToDouble(p->p.getAge()).average().getAsDouble(); System.out.println("平均值;"+df.format(ave)); } @Test public void test4() { System.err.println("======================Map-操作======================"); List<People> list = getPeopleList(); List<Integer> collect1 = list.stream().map(People::getId).collect(Collectors.toList()); List<Integer> collect2 = list.stream().map(a-> a.getId()).collect(Collectors.toList()); List<Map<String,Object>> collect3 = list.stream().map(p->{ HashMap<String, Object> map = new HashMap<String,Object>(); map.put("id", p.getId()); map.put("age", p.getAge()); return map; }).collect(Collectors.toList()); Map<String, Integer> collect4 = list.stream().collect(Collectors.toMap(People::getName, People::getAge)); Map<String, Integer> collect5 = list.stream().collect(Collectors.toMap(key->key.getName(), value->{return value.getAge();})); System.out.println(collect5); }
@Test public void test5() { System.err.println("======================数据分组======================"); List<People> list = getPeopleList(); Map<Integer, List<People>> list1 = list.stream().collect(Collectors.groupingBy(People::getAge)); Set<Integer> set = list1.keySet(); set.stream().forEach( s -> System.out.println(list1.get(s).toString())); } @Test public void test6() { System.err.println("======================数据过滤======================"); List<People> list = getPeopleList(); List<People> list1 = list.stream().filter(a -> a.getAge() == 18).filter(p -> p.getName().equals("小A")).collect(Collectors.toList()); List<People> list2 = list.stream().filter(a->a.getAge() == 18 && a.getName().equals("小A")).collect(Collectors.toList()); System.out.println(list1); } private List<People> getPeopleList(){ List<People> list = new ArrayList<>(); People p1 = new People(1,"小A",18); People p2 = new People(2,"小B",19); People p3 = new People(3,"小C",20); People p4 = new People(4,"小D",25); People p5 = new People(5,"小E",23); People p6 = new People(6,"小F",15); People p7 = new People(7,"小G",24); People p8 = new People(8,"小H",23); People p9 = new People(9,"小I",18); list = Arrays.asList(p1, p2, p3, p4, p5,p6, p7, p8, p9); return list; } } class People { private Integer id; private String name; private Integer age; public People(Integer id, String name, Integer age) { this.id = id;this.name = name;this.age = age; } @Override public String toString() { return "\n" + "People{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}' + "\n"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
其它参考:https://blog.csdn.net/lu930124/article/details/77595585
reduce()求和:https://www.jb51.net/article/213142.htm

浙公网安备 33010602011771号