java集合

Collection接口:

旗下有 listSet

List中包含有:

ArrayList、vectory、LinkedList

Set中包括有:

HashSet、LinkedHashSet、TreeSet
在这里插入图片描述

Map接口:

HashMap、TreeMap、HashTable
在这里插入图片描述

关于Collection和Map的常用方法整理:

Collection集合的方法
Boolean add(Element e)在集合末尾进行元素添加
boolean remove(object o)移除集合中的Object o元素
void clear()清空本集合
boolean contain(object o) 判断集合中是否包含某元素
boolean isEmpty() 判断集合是否为空
int size() 返回集合中的元素个数
boolean addAll(collection a) 将a集合中的所有元素添加到另外一个集合
Object[]toArray() 返回一个包含集合所有元素的数组
Iterator iterator()迭代器
Map的方法
boolean containValue(object value)查询是否包含指定值
boolean containKey(object key)查询map中是否有指定的key
void clear()清空本集合
Set entrySet()返回一个包含所有键值对组成的set集合,每个集合元素都是map、entry对象
boolean isEmpty() 判断map是否为空
Object put(Object key,Object value) 添加键值对
void putAll(Map m) 将m中的键值复制到另外一个map
Object remove(object key)删除key对应的键值对,返回可以关联的value
int size()返回该map中所有value组成的collection
boolean idEmpty()

常用的集合的细节:

关系图

  • ArrayList:初始大小为10,扩容系数每次为1.5,底层为Object数组进行实现,线程不安全
  • Vector:初始大小为10,扩容系数为2,底层实现为Object数组,线程安全,同步方式为synchoronized
  • HashSet:初始大小为16,扩容系数为2,底层实现为HashMap<E,Object>键值对,线程不安全
  • HashMap:初始大小为16,扩容系数为2,底层为键值对实现,线程不安全
  • HashTable :初始大小为11,扩容系数为2倍,线程安全,同步方式为synchoronized

关于List,set,map

list:有序集合

常用方法:

add(Object obj)//增
remove(int index) / remove(Object obj)//删
set(int index,Object ele)//改
get(int index)//查
add(int index,Object ele)//插入
size()//获取长度
void add(int index, Object o); //在index 位置插入o 元素
boolean addAll(int index, Collection c); //从index 位置开始将c集合中的所有元素添加进来
Object get(int index);//获取指定index 位置的元素
int indexOf(Object obj);//返回obj 在集合中首次出现的位置
int lastIndexOf(Object obj);//返回obj 在当前集合中末次出现的位置
Object remove(int index);//移除指定index 位置的元素,并返回被删除的元素
Object set(int index, Object ele);//设置指定index 位置的元素为ele,返回的是被改的值
List subList(int fromIndex, int toIndex);//返回从fromIndex 到toIndex位置的左闭右开的子集合而本身这个list不会改变
 //关于遍历
1.//Iterator迭代器方式
		Iterator iterator = list.iterator();
		while(iterator.hasnext()){
			sou(iterator.next());
		}
2.//增强for循环
		for(Object obj : list){
			sout(obj);
		}
3.//普通的循环
		for(int i =0;i<list.size();i++){
			sout(list.get(i));
		}

set:无序集合

map:无序键值对

常用方法:

 Object put(Object key,Object value)//将指定key-value添加到(或修改)当前map对象中
 void putAll(Map m)//将m中的所有key-value对存放到当前map中
 Object remove(Object key)//移除指定key的key-value对,并返回value
 void clear()//清空当前map中的所有数据元素的操作:
 Object get(Object key)//获取指定key对应的value
 int size()//返回map中key-value对的个数
Set keySet()//返回所有key构成的Set集合 要是遍历的话再去遍历Set
Collection values()//返回所有value构成的Collection集合
Set entrySet()//返回所有key-value对构成的Set集合
boolean containsKey(Object key)//是否包含指定的key
boolean containsValue(Object value)//是否包含指定的value
boolean isEmpty()//判断当前map是否为空
boolean equals(Object obj)//判断当前map和参数对象obj是否相等

关于数据结构的差异:

Array:以数组作为数据结构底层,查询快

Linked:以链表作为数据机构底层,增删快

Hash:以哈希表作为底层,主要依赖hashcode()与equals()

Tree:二叉树作为底层,自然排序法和比较器排序

ArrayList与Vector

这二者都属于有序集合,但vector相比araylist更加安全,与线程之间同步,arraylist不然

ArrayList与LinkedList

al是基于动态数组的一种数据结构,而Ll是基于链表的一种数据结构(拉珠警告

相比与al来说,LL的使用中,添加与删除都更加迅速,但是对于随机访问,aL更占优势

HashSet与TreeSet

hashset的性能更好,采用红黑树算法的treeset的主要用于需要进行排序操作的set,而大多数情况下hashset应该作为受选

HashMap与HashSet

二者都为hash算法进行元素的位置储存,区别在于set不允许有重复的值,而map不允许有重复的key(键)

HashTable与HashMap

HT的安全性更高,但HM的性能更好,RL多个线程1访问同一个map对象的时候应该使用table来确保线程的一个安全性

关于synchronized( )

此方法可以将指定的集合包装成线程同步的集合,解决掉多线程并发访问时集合的线程安全问题

List array = Collections.synchronized(list);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值