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>() {
@Override
public 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");
}
}
}