❶ 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流。从结果操作来看是一样的,中间过程回产生一些临时变量。