將list集合去空
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
//.filter(o -> !o.isEmpty)過濾對象是空的蹋岩,collect收集(Collectors.toList)將結果轉化為List
List<String> collect = strings.stream().filter(o -> !o.isEmpty()).collect(Collectors.toList());
'forEach' 來迭代流中的每個數(shù)據(jù)
//生成隨機數(shù)
Random random = new Random();
//.ints().limit(10)生成10個隨機數(shù).forEach遍歷輸出
random.ints().limit(10).forEach(System.out::println);
distinct不同的(去重)
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
//以map的形式映射對象剪个,distinct()去重版确,collect收集(Coolectors.toList)收集轉換成List集合
List<Integer> collect = numbers.stream().map(o -> o*2).distinct().collect(Collectors.toList);
計算是空的集合的個數(shù)
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
//過濾是空的集合個數(shù)
Long count = strings.stream().filter(0 -> o.isEntry()).count();
對隨機數(shù)進行過濾
Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);
使用lambda表達式
//傳統(tǒng)用法
String[] atp = {"Rafael Nadal", "Novak Djokovic",
"Stanislas Wawrinka",
"David Ferrer","Roger Federer",
"Andy Murray","Tomas Berdych",
"Juan Martin Del Potro"};
List<String> players = Arrays.asList(atp);
for (String player : players) {
System.out.println("player:"+player);
}
//lambda 表達試以及函數(shù)操作(function operation)
players.forEach((player -> System.out.println(player)));
// 在java8中使用雙冒號操作符(double colon operator)
players.forEach(System.out::println);
lambda表達式的簡單例子:
// 1. 不需要參數(shù),返回值為 5
() -> 5
// 2. 接收一個參數(shù)(數(shù)字類型),返回其2倍的值
x -> 2 * x
// 3. 接受2個參數(shù)(數(shù)字),并返回他們的差值
(x, y) -> x – y
// 4. 接收2個int型整數(shù),返回他們的和
(int x, int y) -> x + y
// 5. 接受一個 string 對象,并在控制臺打印,不返回任何值(看起來像是返回void)
(String s) -> System.out.print(s)
匿名內部類
// 使用匿名內部類
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
// 或者使用 lambda expression
btn.setOnAction(event -> System.out.println("Hello World!"));
lambdas 來實現(xiàn) Runnable接口 的示例:
// 1.1使用匿名內部類
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello world !");
}
}).start();
// 1.2使用 lambda expression
new Thread(() -> System.out.println("Hello world !")).start();
// 2.1使用匿名內部類
Runnable race1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello world !");
}
};
// 2.2使用 lambda expression
Runnable race2 = () -> System.out.println("Hello world !");
// 直接調用 run 方法(沒開新線程哦!)
race1.run();
race2.run();
使用匿名內部類根據(jù)name排序players
String[] players = {"Rafael Nadal", "Novak Djokovic",
"Stanislas Wawrinka", "David Ferrer",
"Roger Federer", "Andy Murray",
"Tomas Berdych", "Juan Martin Del Potro",
"Richard Gasquet", "John Isner"};
//使用匿名內部類根據(jù)name排序players Comparators 比較器
Arrays.sort(players, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
//使用lambdas表達式可以通過以下方法實現(xiàn)
//使用lambda expression 排序players
Comparator<String> sortByName = ((String o1, String o2) -> (o1.compareTo(o2)));
Arrays.sort(players,sortByName);
//也可以采用一下形式
Arrays.sort(players,((String s1,String s2) -> (s1.compareTo(s2))));
//使用匿名內部類根據(jù)surname 排序 players
Arrays.sort(players, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.substring(o1.indexOf(" ")).compareTo(o2.substring(o1.indexOf(" ")));
}
});
//使用lambda 表達式排序忌堂,根據(jù)surname
Arrays.sort(players,(String s1,String s2) -> (s1.substring(s1.indexOf(" ")).compareTo(s2.substring(s2.indexOf(" ")))));
//使用匿名內部類根據(jù) name lenght 排序 players
Arrays.sort(players, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o1.length() - o2.length());
}
});
// 使用 lambda expression 排序,根據(jù) name lenght
Arrays.sort(players,(String s1,String s2) -> (s1.length() -s2.length()));
//根據(jù)最后一個字母排序
Arrays.sort(players,(String s1, String s2) -> (s1.charAt(s1.length()-1)) - s2.charAt(s2.length()-1));
}