Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据,极大的简洁了你的代码,干净,直观。
遍历
List<String> lists=Arrays.asList("1","2","3","4");
lists.stream().forEach(System.out::println);
过滤
List<User> users= new ArrayList<User>();
users.add(new User("小明",18));
users.add(new User("老王",45));
users.add(new User("小红",15));
users.stream().filter(u->u.getAge()>17).forEach(System.out::println);
排序
//根据元素排序
List<Integer> list = Arrays.asList(1,3,40,25,16,17,100);
list = list.stream().sorted().collect(Collectors.toList());
System.out.println("正序:"+list);
list = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("倒序:"+list);
//根据属性排序
List<User> users =new ArrayList();
users.add(new User("小一",18));
users.add(new User("小二",30));
users.add(new User("小三",25));
users.add(new User("小四",60));
users.add(new User("小五",6));
users =users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
System.out.println("属性升序:"+users);
users =users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
System.out.println("属性降序:"+users);
Map操作
场景:获取某个属性的集合
List<User> users =new ArrayList();
users.add(new User("小一",18));
users.add(new User("小二",30));
users.add(new User("小三",25));
users.add(new User("小四",60));
users.add(new User("小五",6));
List<Integer> list =users.stream().map(User::getAge).collect(Collectors.toList());
System.out.println("年龄集合:"+list);
将流中元素收集到另外一个目标中
List<String> example = Arrays.asList("1","2","3","4");
//转换为list
List<String> list = example.stream().collect(Collectors.toList());
//转换为set
Set<String> set = example.stream().collect(Collectors.toSet());
//如果想要控制获得集的种类
TreeSet treeset = example.stream().collect(Collectors.toCollection(TreeSet::new));
//连接操作合成字符串
String str = example.stream().collect(Collectors.joining());
//分隔符连接成字符串
String strappend = example.stream().collect(Collectors.joining("-"));
System.out.println("list---->"+list);
System.out.println("set---->"+set);
System.out.println("treeset----->"+treeset);
System.out.println("str----->"+str);
System.out.println("strappend--->"+strappend);
映射成键值对
List<Person> persons = Arrays.asList(new Person("小一", "男", "110"),new Person("小二", "男", "111"),new Person("小三", "男", "112")
,new Person("小四", "男", "113"),new Person("小五", "男", "114"));
Map<String,String> map1 = persons.stream().collect(Collectors.toMap(Person::getPhone, Person::getName));
Map<String,Person> map2 = persons.stream().collect(Collectors.toMap(Person::getPhone, Function.identity()));
System.out.println("map1---->"+map1);
System.out.println("map2---->"+map2);