❶ java對List去重並排序,如何快速地去掉兩個
Java8開始,對數值,集昌並廳合等提供了Stream流操作,可以方便的對集合進行操作.
比如 篩選,過濾,去重, 映射, 排序,規約,收集 等操作
簡單的參考代碼如下
importjava.util.Arrays;
importjava.util.List;
importjava.util.stream.Collectors;
//使用Java8的Stream特性和Java8的Lambda語句
publicclassDemo{
publicstaticvoidmain(String[]args){
//需求:集合去重,排序,得到一個新集耐隱合裡面的元素是之前元素的平方
List<Integer>list=Arrays.asList(5,2,2,1,3,4);
List<Integer>listResult= list
.stream()//得到流
.distinct()//去重蔽爛5,2,1,3,4
.sorted()//自然排序,也可以自定義排序規則1,2,3,4,5
.map(x->x*x)//每個元素求平方1,4,9,16,25
.collect(Collectors.toList());//收集並返回
System.out.println(listResult);//1,4,9,16,25
}
}
❷ java利用數組求最大值,最小值,平均值,進
傳統的做法就是for循環, 通過循環比較得到最小值,最大值. 通過累加的和除以個數等於平均值
比較新的做法就是Java8 的流操作. 可以更方便快捷的得到最大,最小和平均值
參考代碼如下
importjava.util.Arrays;
importjava.util.IntSummaryStatistics;
importjava.util.stream.Collectors;
publicclassArrayDemo{
publicstaticvoidmain(String[]args){
Integer[]nums={6,5,7,8};
test1(nums);
System.out.println("----分割線---");
test2(nums);
}
//傳統的處理方法
publicstaticvoidtest1(Integer[]nums){
intmax=Integer.MIN_VALUE;
intmin=Integer.MAX_VALUE;
intsum=0;
for(Integernum:nums){
if(num>max){
max=num;
}
if(num<min){
min=num;
}
sum+=num;
}
doubleavg=sum*1.0/nums.length;
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
System.out.println("平均值:"+avg);
}
//Java8開始的stream操作
publicstaticvoidtest2(Integer[]nums){
IntSummaryStatisticsresults=Arrays.stream(nums).collect(Collectors.summarizingInt(e->e));
intmax=results.getMax();//獲取最大值
System.out.println("最大值:"+max);
intmin=results.getMin();
System.out.println("最小值:"+min);
doubleavg=results.getAverage();
System.out.println("平均值:"+avg);
}
}
❸ Java8,stream().map().collect(Collectors.toList()).forEach()和stream().map().forEach()有啥區別
在stream().map().collect(Collectors.toList()).forEach()中,你的forEach()針對的List;而
stream().map().forEach()針對的是Stream流。從結果操作來看是一樣的,中間過程回產生一些臨時變數。