Java中集合类的对比总结

ArrayList和LinkedList

ArrayList:
ArrayList是线性的数据结构,可以在任何位置对元素进行增删。
注意点
1.ArrayList是非同步的,也就是说,在多线程并发操作ArrayList时候需要对ArrayList进行同步。
2.ArrayList内部是用数组实现的,增删会引起数组内存动态变化。因此插入删除慢,但检索很快
3.ArrayList中可以同时存放不同的对象
常用方法:
boolean add(Object element);
void add(int index,Object element);
Object get(int index);
boolean contains(Object elem);
int indexOf(Object elem);
Object remove(int index);
boolean remove(Object o);
int size();
void clear(); //清空链表

LinkedList:
LinkedList也是线性的数据结构,可以在任何位置对元素进行增删。
注意点
1.LinkedList是非同步的,也就是说,在多线程并发操作LinkedList时候需要对LinkedList进行同步。
2.LinkedList内部是用动态链表实现的,增删快,检索慢。

3.LinkedList实现了Queue接口,可以用做一个先进先出的队列来使用。
常用方法与ArrayList相似,增加了Queue接口的方法如下:
boolean offer(Object elem); //增加元素到队列尾部
Object peek();  //获取队列头部元素,并且不从队列中移出
Object poll();  //获取队列头部元素,并且从队列中移出
Object remove(); //将队列头部元素移出

 

HashSet:

HashSet 是个集合类型的数据结构,实现了Set接口,满足数学上对集合的定义:无需不重复

注意点:
1 HashSet是非同步的。也就是说,多线程并发操作HashSet的场景下,需要对HashSet同步
2 Hashset内部是用HashMap来实现的,对元素的增加、删除、检索有很高的性能
3 HashSet中元素是无序的,因此对HashSet遍历,不保证遍历顺序都一致。
4 Hashset中没有重复元素,因此将相同的对象加入到HashSet中,则最终HashSet只有一个对象
常用方法:
boolean add(Object o);
boolean remove(Object o);
boolean contains(Object o);
Iterator iterator(); //返回集合迭代器,用于遍历集合
boolean isEmpty();
int size();
void clear();

 

 

HashMap

HashMap 又称杂凑表 散列表,它是一个非线性的数据结构。其中每个元素由key和value对构成,key用来做索引,value
是实际要存储的值。

注意:
1 HashMap是非同步的,也就是说,在多线程并发操作HashMap时,需要对HashMap进行同步。
2 HashMap对元素的插入、删除、检索的速度都很快,在高性能的情况下被大量使用,其缺点是内存占用较多。
3 HaspMap中可以存放不同类型的对象,包括Null

常用方法:
Object put(Object key,Object value);
Object get(Object key);
Object remove(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
Set keySet();  //获取key的集合,配合get方法,可以遍历Map
Set entrySet(); //获取Map.Entry集合,可以通过Map.Entry直接遍历每个key和value
boolean isEmpty();
int size();
void clear();

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值