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");}}
}