Java 8 新特性Lambda 表达式
生活随笔
收集整理的這篇文章主要介紹了
Java 8 新特性Lambda 表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 8 新特性Lambda 表達式
- 一、常用循環
- 二、匿名內部類
- 三、排序集合
- 四、循環打印對象
- 五、根據條件修改
- 六、排序
- 七、求和
- 八、統計方法
- 九、材料
一、常用循環
public class Spring3 {public static void main(String[] args) {String[] atp = {"yuanGe","daWei","xiaoMing"};List<String> players = Arrays.asList(atp);// 以前的循環方式for (String player : players) {System.out.println(player + "; ");}System.out.println("===================================");// 使用 lambda 表達式以及函數操作(functional operation)players.forEach((player) -> System.out.println(player + "; "));System.out.println("===================================");// 在 Java 8 中使用雙冒號操作符(double colon operator)players.forEach(System.out::println);} }二、匿名內部類
public class Spring3 {public static void main(String[] args) {// 1.1使用匿名內部類new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Hello world !");}}).start();// 1.2使用 lambda expressionnew Thread(() -> System.out.println("Hello world !")).start();// 2.1使用匿名內部類Runnable race1 = new Runnable() {@Overridepublic void run() {System.out.println("Hello world !");}};// 2.2使用 lambda expressionRunnable race2 = () -> System.out.println("Hello world !");// 直接調用 run 方法(沒開新線程哦!)race1.run();race2.run();} }三、排序集合
public class Spring3 {public static void main(String[] args) {String[] atp2 = {"Z","B","C"};// 1.1 使用匿名內部類根據 name 排序 playersArrays.sort(atp2, new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {return (s1.compareTo(s2));}});List<String> players2 = Arrays.asList(atp2);players2.forEach(System.out::println);} }四、循環打印對象
@AllArgsConstructor//創建帶參構造器 @Data//get、set方法,為該類添加equals、canEquals、hashCode、toString方法 @Slf4j//log的Log4J日志對象 public class Person {@NonNull//屬性非空private String a;private String b;private String c;private String d;private Integer e;private Integer f; }public class Spring3 {public static void main(String[] args) {List<Person> javaProgrammers = new ArrayList<Person>() {{add(new Person("Elsdon", "Jaycob", "Java programmer", "male", 43, 2000));add(new Person("Tamsen", "Brittany", "Java programmer", "female", 23, 1500));add(new Person("Floyd", "Donny", "Java programmer", "male", 33, 1800));add(new Person("Sindy", "Jonie", "Java programmer", "female", 32, 1600));add(new Person("Vere", "Hervey", "Java programmer", "male", 22, 1200));add(new Person("Maude", "Jaimie", "Java programmer", "female", 27, 1900));add(new Person("Shawn", "Randall", "Java programmer", "male", 30, 2300));add(new Person("Jayden", "Corrina", "Java programmer", "female", 35, 1700));add(new Person("Palmer", "Dene", "Java programmer", "male", 33, 2000));add(new Person("Addison", "Pam", "Java programmer", "female", 34, 1300));}};List<Person> phpProgrammers = new ArrayList<Person>() {{add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34, 1550));add(new Person("Clarette", "Cicely", "PHP programmer", "female", 23, 1200));add(new Person("Victor", "Channing", "PHP programmer", "male", 32, 1600));add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21, 1000));add(new Person("Osborne", "Shad", "PHP programmer", "male", 32, 1100));add(new Person("Rosalind", "Layla", "PHP programmer", "female", 25, 1300));add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36, 1100));add(new Person("Quinn", "Tamara", "PHP programmer", "female", 21, 1000));add(new Person("Alvin", "Lance", "PHP programmer", "male", 38, 1600));add(new Person("Evonne", "Shari", "PHP programmer", "female", 40, 1800));}};javaProgrammers.forEach((p) -> System.out.printf("%s %s; ", p.getA(), p.getB()));phpProgrammers.forEach((p) -> System.out.printf("%s %s; ", p.getA(), p.getB()));} }總結
for(Object o: list) { // 外部迭代System.out.println(o);} //可以寫成: list.forEach(o -> {System.out.println(o);}); //forEach函數實現內部迭代五、根據條件修改
filter方法的參數是Predicate類型,forEach方法的參數是Consumer類型,它們都是函數式接口,所以可以使用λ表達式。
將E屬性為34的對象將其F屬性設置為100
六、排序
public class Spring3 {public static void main(String[] args) {//根據A列名字排序List<Person> sortedJavaProgrammers = javaProgrammers.stream().sorted((p, p2) -> (p.getA().compareTo(p2.getA()))).limit(5).collect(Collectors.toList());sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n", p.getA(), p.getB()));//根據F列數字排序sortedJavaProgrammers = javaProgrammers.stream().sorted((p, p2) -> (p.getF() - p2.getF())).collect(Collectors.toList());sortedJavaProgrammers.forEach((p) -> System.out.printf("%s %s; %n", p.getA(), p.getB()));} }七、求和
上面的例子中我們已經看到 collect 方法是如何工作的。 結合 map 方法,我們可以使用 collect 方法來將我們的結果集放到一個字符串,一個 Set 或一個TreeSet中:
public class Spring3 {public static void main(String[] args) {int totalSalary = javaProgrammers.parallelStream().mapToInt(p -> p.getF()).sum();System.out.println(totalSalary);} }八、統計方法
public class Spring3 {public static void main(String[] args) {//計算 count, min, max, sum, and average for numbersList<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics();System.out.println("List中最大的數字 : " + stats.getMax());System.out.println("List中最小的數字 : " + stats.getMin());System.out.println("所有數字的總和 : " + stats.getSum());System.out.println("所有數字的平均值 : " + stats.getAverage());} }九、材料
本文一共兩個用到兩個類
總結
以上是生活随笔為你收集整理的Java 8 新特性Lambda 表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简·雅各布斯(yane jacobs y
- 下一篇: matlab实现kuan滤波,用Matl