Stream
Stream
ä½¿ç¨ java.util.Stream 对ä¸ä¸ªå
å«ä¸ä¸ªæå¤ä¸ªå
ç´ çéåååç§æä½ï¼åéåä¸åï¼è¿åæ°éåãåªè½å¯¹å®ç°äº java.util.Collection æ¥å£çç±»åæµçæä½ãMap 䏿¯æ Stream æµãStream æµæ¯æåæ¥æ§è¡ï¼ä¹æ¯æå¹¶åæ§è¡ã
Filter è¿æ»¤
Filterçå
¥åæ¯ä¸ä¸ªPredicateï¼ç¨äºçéåºæä»¬éè¦çéåå
ç´ ãåéåä¸åãfilter ä¼è¿æ»¤æä¸ç¬¦åç¹å®æ¡ä»¶çï¼ä¸é¢ç代ç ä¼è¿æ»¤ænameListä¸ä¸ä»¥å¤§å½¬å¼å¤´çå符串ã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:05
*/
public class StreamTest {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("大彬1");
nameList.add("大彬2");
nameList.add("aaa");
nameList.add("bbb");
nameList
.stream()
.filter((s) -> s.startsWith("大彬"))
.forEach(System.out::println);
}
/**
* output
* 大彬1
* 大彬2
*/
}
Sorted æåº
èªç¶æåºï¼ä¸æ¹ååéåï¼è¿åæåºåçéåã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:05
*/
public class StreamTest1 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("大彬3");
nameList.add("大彬1");
nameList.add("大彬2");
nameList.add("aaa");
nameList.add("bbb");
nameList
.stream()
.filter((s) -> s.startsWith("大彬"))
.sorted()
.forEach(System.out::println);
}
/**
* output
* 大彬1
* 大彬2
* 大彬3
*/
}
éåºæåºï¼
nameList
.stream()
.sorted(Comparator.reverseOrder());
对å ç´ æä¸ªå段æåºï¼
list.stream().sorted(Comparator.comparing(Student::getAge).reversed());
list.stream().sorted(Comparator.comparing(Student::getAge));
Map 转æ¢
å°æ¯ä¸ªå符串转为大åã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:05
*/
public class StreamTest2 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("aaa");
nameList.add("bbb");
nameList
.stream()
.map(String::toUpperCase)
.forEach(System.out::println);
}
/**
* output
* AAA
* BBB
*/
}
Match å¹é
éªè¯ nameList ä¸çå符串æ¯å¦æä»¥å¤§å½¬å¼å¤´çã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:05
*/
public class StreamTest3 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("大彬1");
nameList.add("大彬2");
boolean startWithDabin =
nameList
.stream()
.map(String::toUpperCase)
.anyMatch((s) -> s.startsWith("大彬"));
System.out.println(startWithDabin);
}
/**
* output
* true
*/
}
Count 计æ°
ç»è®¡ stream æµä¸çå
ç´ æ»æ°ï¼è¿å弿¯ long ç±»åã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:05
*/
public class StreamTest4 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("大彬1");
nameList.add("大彬2");
nameList.add("aaa");
long count =
nameList
.stream()
.map(String::toUpperCase)
.filter((s) -> s.startsWith("大彬"))
.count();
System.out.println(count);
}
/**
* output
* 2
*/
}
Reduce
ç±»ä¼¼æ¼æ¥ãå¯ä»¥å®ç°å° list å½çº¦æä¸ä¸ªå¼ãå®çè¿åç±»åæ¯ Optional ç±»åã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:22
*/
public class StreamTest5 {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("大彬1");
nameList.add("大彬2");
Optional<String> reduced =
nameList
.stream()
.sorted()
.reduce((s1, s2) -> s1 + "#" + s2);
reduced.ifPresent(System.out::println);
}
/**
* output
* 大彬1#大彬2
*/
}
flatMap
flatMap ç¨äºå°å¤ä¸ªStreamè¿æ¥æä¸ä¸ªStreamã
ä¸é¢çä¾åï¼æå 个å°çlist转æ¢å°ä¸ä¸ªå¤§çlistã
/**
* @description: æå 个å°çlist转æ¢å°ä¸ä¸ªå¤§çlistã
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:28
*/
public class StreamTest6 {
public static void main(String[] args) {
List<String> team1 = Arrays.asList("大彬1", "大彬2", "大彬3");
List<String> team2 = Arrays.asList("大彬4", "大彬5");
List<List<String>> players = new ArrayList<>();
players.add(team1);
players.add(team2);
List<String> flatMapList = players.stream()
.flatMap(pList -> pList.stream())
.collect(Collectors.toList());
System.out.println(flatMapList);
}
/**
* output
* [大彬1, 大彬2, 大彬3, 大彬4, 大彬5]
*/
}
ä¸é¢çä¾åä¸ï¼å°wordsæ°ç»ä¸çå ç´ æç §å符æåï¼ç¶å对å符å»éã
/**
* @description:
* @author: ç¨åºå大彬
* @time: 2021-09-06 00:35
*/
public class StreamTest7 {
public static void main(String[] args) {
List<String> words = new ArrayList<String>();
words.add("大彬æå¼º");
words.add("大彬666");
//å°wordsæ°ç»ä¸çå
ç´ æç
§å符æåï¼ç¶å对å符å»é
List<String> stringList = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.distinct()
.collect(Collectors.toList());
stringList.forEach(e -> System.out.print(e + ", "));
}
/**
* output
* 大, 彬, æ, 强, 6,
*/
}