1. 使用java8 提取出 list 中 bean 的某一屬性
public static void main(String[] args) {
List<Student> stuList = new ArrayList<Student>();
Student st1 = new Student("123","aaa");
Student st2 = new Student("234","bbb");
Student st3 = new Student("345","ccc");
Student st4 = new Student("345","ccc");
stuList.add(st1);
stuList.add(st2);
stuList.add(st3);
stuList.add(st4);
//1.提取出list對象中的一個屬性
List<String> stIdList1 = stuList.stream()
.map(Student::getId)
.collect(Collectors.toList());
stIdList1.forEach(s -> System.out.print(s+" "));
System.out.println();
System.out.println("----------");
//2.提取出list對象中的一個屬性並去重
List<String> stIdList2 = stuList.stream()
.map(Student::getId).distinct()
.collect(Collectors.toList());
stIdList2.forEach(s -> System.out.print(s+" "));
/* 結果:
123 234 345 345
----------
123 234 345
*/
}
2. java8 中根據判斷刪除列表list中的元素
我們知道,在java8出lambda表達式之前,是不支持在循環中直接對list進行刪除的。但是java8的新特性lambda表達式,幫我們實現了這個功能:
List<String> lists = new ArrayList<>();
lists.add("a");
lists.add("b");
lists.add("c");
//使用removeIf方法,->裏的是判斷條件,如果符合這個條件就刪除。這裏會刪除帶有c的元素
lists.removeIf(s -> s.contains("c"));
java8新特性大大的簡化了我們的代碼,使用更加的方便。
3. java8 獲取 lsit 中bean 的某一屬性最大的對象
Student student = studentList.stream().max(Comparator.comparing(Student::getClassCount)).get();
4. java8 計算代碼運行時間
java8之前是這樣計算代碼運行時間的
long startTime=System.currentTimeMillis(); //獲取開始時間
doSomeThing(); //測試的代碼段
long endTime=System.currentTimeMillis(); //獲取結束時間
System.out.println("程序運行時間: "+(end-start)+"ms");
java8之後可以使用Instant獲取時間戳來計算代碼運行時間
public static void main(String[] args) {
Instant start = Instant.now();
LongStream.rangeClosed( 0,110 )
//並行流
.parallel()
.reduce( 0,Long::sum );
LongStream.rangeClosed( 0,110 )
//順序流
.sequential()
.reduce( 0,Long::sum );
Instant end = Instant.now();
System.out.println("耗費時間"+ Duration.between( start,end ).toMillis());
}
個人公衆號《駭客與畫家》,歡迎關注