Collection和Collections的区别

Collection和Collections的区别

Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List
Collections是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

编程练习题
用程序给出随便大小的10 个整数,序号为1-10,【序号是存储时产生的序号】按从小到大顺序输出,并输出相应的序号。
1、定义类用于封装产生的序号和对应的数据。
2、因为需要对数据进行排序,则必须是可比较的。实现方法可以是类实现Comparable接口,还可以额外定义比较器。

实现Comparable接口表示Number类对象支持比较。

public class Number implements Comparable<Number>{
	private int index;
	private int number;
	
	public Number() {}
	public Number(int index,int number) {
		this.index = index;
		this.number = number;
	}
	
	@Override
	public String toString() {
		return "Number [index=" + index + ", number=" + number + "]";
	}
	
	public int getIndex() {
		return index;
	}
	public void setIndex(int index) {
		this.index = index;
	}
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	@Override
	public int compareTo(Number o) {
		return this.number - o.number;
	}
	
}

方法1:生成数据并存入到TreeSet中

public class Test1 {

	public static void main(String[] args) {
		Set<Number> set = new TreeSet<>();
		Random rr = new Random();
		int i=0;
		while(set.size()<10) {
			Number temp = new Number(set.size()+1,rr.nextInt(100));
			set.add(temp);
		}
		set.forEach(System.out::println);
	}
}

方法2:存储到List中进行排序

public class Test2 {

	public static void main(String[] args) {
		List<Number> list = new LinkedList<Number>();
		Random rr = new Random();
		int i=0;
		while(list.size()<10) {
			Number temp = new Number(list.size()+1,rr.nextInt(100));
			if(!list.contains(temp))
				list.add(temp);
		}
		list.sort((obj1,obj2)->{
			return obj1.compareTo(obj2);});
		list.forEach(System.out::println);
	}
}

方法3:存储在List中使用自定义比较器,类并没有实现Comparable接口

public class Test3 {

	public static void main(String[] args) {
		List<Number> list = new LinkedList<Number>();
		Random rr = new Random();
		int i=0;
		while(list.size()<10) {
			Number temp = new Number(list.size()+1,rr.nextInt(100));
			if(!list.contains(temp))
				list.add(temp);
		}
		Collections.sort(list,(obj1,obj2)->{
			return obj1.getNumber() - obj2.getNumber();
		});
		list.forEach(System.out::println);
	}
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值