List、Set集合区别?有一些数据在List集合存放,怎样去重复?

简单总结,List继承了Collection,是有序的列表。

数据取出方式:for、迭代器(Iterator)、增强for.

实现类有ArrayListLinkedListVectorStack 

ArrayList是基于数组实现的,是一个数组队列。可以动态的增加容量.

LinkedList是基于链表实现的,是一个双向循环列表。可以被当做堆栈使用.

Vector是基于数组实现的,是一个矢量队列,是线程安全的.

Stack是基于数组实现的,是栈,它继承与Vector,特性是FILO(先进后出).

  List使用场景:

在实际的应用中如果使用到队列,栈,链表,首先可以想到使用List

不同的场景下面使用不同的工具类,效率才能更高。 

 当集合中对插入元素数据的速度要求不高,但是要求快速访问元素数据,则使用ArrayList.

 当集合中对访问元素数据速度要求不高,但是对插入和删除元素数据速度

要求高的情况,则使用LinkedList.

 当集合中有多线程对集合元素进行操作时候,则使用Vector.

但是现在Vector现在一般不再使用,如需在多线程下使用,

可以用CopyOnWriteArrayList,在java.util.concurrent包下。 

 当集合中有需求是希望后保存的数据先读取出来,则使用Stack.

简单总结,set集合可以存储多个对象,但并不会记住元素的存储顺序,也不允许集合中有重复元素(不同的set集合有不同的判断方法)

数据取出方式有:迭代器(Iterator)、增强for循环.

实现类有HashSetLinkedHashSetTreeSet等。

HashSet采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()

equals()方法.元素的存与取的顺序不能保证一致.允许放null值,只能一个null.

LinkedHashSet元素唯一不能重复,底层结构是 哈希表结构 + 链表结构,元素的

存与取的顺序一致.

TreeSet的本质是一个"有序的,并且没有重复元素"的集合,它是二叉树实

现的。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 

提供的 Comparator 进行排序。不允许放入null值。

 

   Set使用场景

HashSet是基于Hash算法实现的,其性能通常都优于TreeSet。为快速查找而设计的

Set,通常都应该使用HashSet,在我们需要排序的功能时,才使用TreeSet

 

  List集合数据去重复:遍历存放至SetHashSet)集合,如果集合存放的是自定义

对象,那么保证其唯一,就必须重写hashCodeequals方法建立属于当前对象的比较方式。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值