利用比较器给集合排序

package cn.itcast.demo;


import java.util.ArrayList;


import java.util.Collections;
import java.util.Random;


/*
 * 第1题:生成10个1-15之间的随机数,存储到List集合中(数字不能重复)。完成以下要求:
 a、求出List集合中每个元素的阶乘(用递归计算),并对求出的结果进行降序排序输出
 b、把排序后的数据中不能被2整除的元素打印到控制台。
 */
public class Demo1 {
public static void main(String[] args) {
Random ran = new Random();
ArrayList<Integer> list  = new ArrayList<>();
//HashSet<Integer> set = new HashSet<>();
while(list.size()<10){
int i = ran.nextInt(15)+1;
if(!list.contains(i)){
list.add(i);
}
}
System.out.println(list);
ArrayList<Long> newList = new ArrayList<>();
for(int i=0;i<list.size();i++){
newList.add(get(list.get(i)));
}
/*//利用集合的方法给集合排序
* Collections.sort(newList);
Collections.reverse(newList);
System.out.println(newList);
for(long i:newList){
if(i%2==1){
System.out.println(i);
}
}*/
//利用比较器   这是一个逆序排列的比较器
Collections.sort(newList, new A());
System.out.println(newList);
}
public static Long get(Integer a){
if(a==1){
return (long) 1;
}else {
return a*get(a-1);
}
}

}




比较器

package cn.itcast.demo;


import java.util.Comparator;


public class A implements Comparator<Long> {
public int compare(Long o1, Long o2) {
//这是一个逆序排列的比较器  若把负号去掉,则为一个正序排列的比较器
return -o1.compareTo(o2);
}
}


































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值