集合、数组正倒(升降)序排序

1.list排序
正序:Collections.sort(list);
倒序:Collections.sort(list);
Collections.reverse(list);
注意Collections.reverse(list);是表示将该列表反过来
看代码:

public static void main(String[] args) {
		int[] iArray = new int[50];//新建一个长度为50的数组
		Random random = new Random();
		List<Integer> al = new ArrayList<Integer>();//新建list
		for (int i = 0; i < 50; i++) {//遍历数组,并插入值
			iArray[i] = random.nextInt(300);//插入0-300的随机数
			int num = iArray[i];
			System.out.print(num + " ");
			if (num % 2 == 0) {//取偶数
				al.add(num);//插入list中
			}
		}
		System.out.println();
		Collections.sort(al);//正序排序
		Collections.reverse(al);//将list反过来
		for (int i : al) {//遍历
			System.out.print(i + " ");
		}
	}

2.treeset(set)排序
本身treeset就就是一个正序集合,创建语法:
TreeSet treeSet = new TreeSet();
倒序排序:
TreeSet treeSet = new TreeSet(Collections.reverseOrder());
看代码:

public static void main(String[] args) {
		int[] iArray = new int[50];//新建一个长度为50的数组
		Random random = new Random();
		TreeSet<Integer> treeSet = new TreeSet<Integer>(Collections.reverseOrder());//新建倒序treeset
		//TreeSet<Integer> treeSet = new TreeSet<Integer>(Collections.reverseOrder());//新建顺序treeset
		for (int i = 0; i < 50; i++) {//遍历数组,并插入值
			iArray[i] = random.nextInt(300);//插入0-300的随机数
			int num = iArray[i];
			System.out.print(num + " ");
			if (num % 2 == 0) {//取偶数
				treeSet.add(num);//插入treeset中
			}
		}
		System.out.println();
		System.out.println("倒序输出偶数");
		for (Integer integer : treeSet) {//遍历
			System.out.print(integer+" ");
		}
	}

3.map排序
Key排序:
正序:用treeMap排序,默认是根据key排序,升序排序
倒序:用Comparator比较器进行排序
上代码:

public static void main(String[] args) {
		int[] iArray = new int[50];//新建一个长度为50的数组
		Random random = new Random();
		Map<Integer,Integer> map = new TreeMap<Integer,Integer>(
				new Comparator<Integer>() {
					public int compare(Integer o1, Integer o2) {
						return o2.compareTo(o1);
					}
				});
		for (int i = 0; i < 50; i++) {//遍历数组,并插入值
			iArray[i] = random.nextInt(300);//插入0-300的随机数
			int num = iArray[i];
			System.out.print(num + " ");
			if (num % 2 == 0) {//取偶数
				map.put(i, num);//插入map中
			}
		}
		System.out.println();
		System.out.println("treeMap的倒序遍历,key倒序遍历");
		for (Integer key : map.keySet()) {
			System.out.print(key + ":" + map.get(key)+" ");
		}
	}

value排序:遍历,储存于list中,利用Collections.sort与比较器来实现排序,正倒序,只需要将比较器中的值换位置即可
上代码:

public static void main(String[] args) {
		int[] iArray = new int[50];// 新建一个长度为50的数组
		Random random = new Random();
		Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
		for (int i = 0; i < 50; i++) {// 遍历数组,并插入值
			iArray[i] = random.nextInt(300);// 插入0-300的随机数
			int num = iArray[i];
			System.out.print(num + " ");
			if (num % 2 == 0) {// 取偶数
				map.put(i, num);// 插入map中
			}
		}
		System.out.println();
		// treemap按照value 排序
		List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
		// 然后通过比较器来实现排序
		Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
			// 降序排序
			public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
				return o2.getValue().compareTo(o1.getValue());
			}
		});
		System.out.println("value降序遍历");
		for (Entry<Integer, Integer> e : list) {
			System.out.print(e.getKey() + ":" + e.getValue()+" ");
		}
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值