Java集合Stream类
----按条件对集合进行过滤filter
public class Test {public static void main(String[] args) {List<String>all=new ArrayList<>();all.add("ghjt");all.add("ghjiiii");Stream<String>stream=all.stream();List<String> newAll=stream.filter(new Predicate<String>() {@Overridepublic boolean test(String s) {return s.contains("t") ;}}).collect(Collectors.toList());newAll.forEach(System.out::println);}
lambda表达式简化写法
接收一个参数s,返回其结果s.contains(“t”)
stream.filter((s)->s.contains("t"));
最后简化写法:
public class Test {public static void main(String[] args) {List<String>all=new ArrayList<>();all.add("ghjt");all.add("ghjiiii");Stream<String>stream=all.stream();List<String> newAll=stream.filter((s)->s.contains("t")).collect(Collectors.toList());newAll.forEach(System.out::println);}}
------在过滤之前对数据流进行处理,使用map()
List<String> newAll=stream.distinct().map((x)->x.toUpperCase()).filter((s)->s.contains("T")).collect(Collectors.toList());
------对数据流进行分页操作,使用
skip(1)跳过第一条数据
limit(1)只取第一条数据
List<String> newAll=stream.distinct().map((x)->x.toUpperCase()).filter((s)->s.contains("T")).skip(1).limit(1).collect(Collectors.toList());
------使用anyMatch或allMatch实现数据匹配操作
public class TestOthers {public static void main(String[] args) {List<String> all=new ArrayList<>();all.add("ghjt");all.add("ghjiiii");all.add("AAAghjt");all.add("SDFGghjiiii");Stream<String> stream=all.stream();if (stream.anyMatch((x)->x.contains("j"))){System.out.println("jjj is exits");}}}
------使用or()或and()实现多个数据匹配
Predicate接口----判断输入的对象是否符合某个条件。(断言式接口)
public class TestOthers {public static void main(String[] args) {List<String> all=new ArrayList<>();all.add("ghjt");all.add("ghjiiii");all.add("AAAghjt");all.add("SDFGghjiiii");Stream<String> stream=all.stream();Predicate<String>p1=(x)->x.contains("iii");Predicate<String>p2=(x)->x.contains("A");if (stream.anyMatch(p1.and(p2))){System.out.println("It's great");}else {System.out.println("bad");}}
}