简单了解:JAVA中的Collection

 一、Collection类图

在IDEA中生成的Collection类图,实线就是继承(extens)的意思,虚线就是实现接口(implements)的意思,绿色线就是接口之间接口与类的关系,蓝色线就是类与类之间的关系。

 可以知道,Collection下有三种集合大类:List、Queue和Set。

二、先说说Collection吧

collection提供了集合常用的接口,比如size()获取集合元素个数,添加查找等,同时也提供了继承了Iterable,提供迭代器。

 Collection常用方法:

1、添加方法
 boolean add(Object obj)	  : 添加一个对象
 boolean addAll(Collection c) : 添加一个集合的对象
2、删除方法
 void clear() 移除所有对象
 boolean remove(Object) 移除一个对象
 boolean removeAll(Collection c) 移除一个集合的对象,只要有一个对象移除了,就返回true
3、判断方法
 boolean contains(Object o) 判断集合是否包含该对象
 boolean containsAll(Collection c) 判断集合中是否包含指定的集合对象,只有包含所有的对象,才返回 true。
 boolean isEmpty() 判断集合是否为空。
4、获取方法
 Iterator<E> iterator() 迭代器
5、长度功能
 int size() 对象个数
6.交集功能
 boolean retainAll(Collection c) 如果存在和c相同的元素,原来的collection仅保留相同的元素。如果不存在相同元素,collection会变为空。collection的元素如果没有改变则返回false,改变了则返回true。
 
Java 8 新方法:
 boolean removeif(Predicate filter) 按照一定规则过滤集合中的对象。Predicate 用于判断对象是否符合某个条件,例:
 public static void main(String[] args) {
        List<String> list  = new ArrayList<>();
        list.add("123");
        list.add("12");
        list.add("1");

        list.removeIf(s -> s.equals("123"));
        list.forEach(s -> System.out.println(s));
    }

三、List

List有点不一样,就是实现了ListIterator接口,可以让Iterator选择任意一个方向迭代(往前或往后),而且还能在迭代中修改list中的元素。

1. hasPrevious() 和 previous() 方法都可以实现逆向遍历。

2. add()和 set()方法可以向 List 中添加和修改元素。

常用的List的实现类

ArrayList

可以理解为这是一个动态数组,因为底层就是开辟一组连续空间用来存放数据,是线程不安全的。

LinkedList

一个双向链表,实现类Queue接口,没啥好说的,也是线程不安全。

Vector

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable

看类继承和实现和ArrayList一样,但vector的方法用了synchronized,所以是线程安全的,但是性能上不理想,所以一般不怎么用到。

Stack

继承了Vector,也是线程安全的,实现了一个先进后出的栈。

四、Set

set的特点就是集合中的元素不重复

HashSet

底层数据结构是哈希表(一个元素为链表的数组),HashSet 是基于 HashMap 实现的,有点像是对 HashMap 做了封装,而且只是用了 HashMap 的 key 来实现其特性。

HashSet 不允许重复,如果出现重复就覆盖,允许为空。HashSet 是线程不安全的。

TreeSet

底层数据结构是红黑树 ,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。

TreeSet的性能比HashSet差但是我们在需要排序的时候可以用TreeSet因为他是自然排序也就是升序。

LinkedHashSet

底层数据结构是由哈希表和链表组成,LinkedHashSet 是线程不安全的。

五、Queue

Queue就是一个先入先出(FIFO)的数据结构,有点不同于List和Set,它下级是Deque(双端列队)、BlockingQueue(阻塞列队)和AbstractQueue(非阻塞列队),然后才是对应的实现类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值