Java常用集合总结

1.      List<E>元素是有序的,可以重复,因为有索引

ArrayList : 数组结构,特定:查询快,增删慢,初始长度是10,50%延长

LinkedList : 链表数据结构,特点:增删快,查询慢

Vector : 数组结构,线程同步,被ArrayList代替,初始长度是10,100%延长,枚举是Vector特有的取出方式,优先使用迭代器

2.      LinkedList总结 : 特殊方法

addFirst(E e)

将指定元素插入此列表的开头

addLast(E e)
将指定元素添加到此列表的结尾。

peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。

peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。

pollFirst()
 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。

pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。

removeFirst()
移除并返回此列表的第一个元素。

removeLast()
移除并返回此列表的最后一个元素。

offer(E e)
将指定元素添加到此列表的末尾(最后一个元素)。

offerFirst(E e)
在此列表的开头插入指定的元素。

offerLast(E e)
在此列表末尾插入指定的元素。

注意: 1.addFirst(E e)addLast(E e)方法是添加到指定位置,不是替代,集合长度增加

2.removeFirst()removeLast()取出元素并移除,会抛出元素不存在异常,使用之前需要判断

3. Set<E>元素是无序的,不可以重复(底层使用的Map集合)

                    HashSet:哈希表结构,它存的是值得地址,先比较哈希值,再比较对象(equals方法)

                    TreeSet可以对集合中元素排序(默认自然顺序)。存储自定义对象时,自定义对象必须实现Compared接口,并重写compareTo(T o)定义排序规则。TreeSet底层使用的二叉树排序算法,排序比较快

10.TreeSet的第二种排序方式:当元素本身不具备比较性,或者没有所需要的比较性,这时就需要让集合本身具备需要的比较性。方法:定义比较器实现Comparator(接口),同样重写compare(T o)方法并传递给TreeSet的构造函数

注意:当一个TreeSet集合包含两种排序方式时,以比较器为主

4.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一种安全机制,避免了强制转换的麻烦,并把强转异常转到了编译期,方便解决问题

 

5.Map集合:和Collection接口一样是顶层接口,和Collection接口没有必然的联系。Map集合以键值对形式存取对象,而且要保证键的唯一性

基本方法

clear()
从此映射中移除所有映射关系(可选操作)。

containsKey(Object key)
 如果此映射包含指定键的映射关系,则返回true

containsValue(Object value)
 如果此映射将一个或多个键映射到指定值,则返回true

entrySet() (重点方法)
返回此映射中包含的映射关系的Set视图。

equals(Object o)
比较指定的对象与此映射是否相等。

get(Object key)
 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null

hashCode()
返回此映射的哈希码值。

isEmpty()
如果此映射未包含键-值映射关系,则返回true

keySet()(重点方法)
返回此映射中包含的键的Set视图

put(K key,V value)
 将指定的值与此映射中的指定键关联(可选操作)。

putAll(Map<? extendsK,? extendsV> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。

remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

size()
返回此映射中的键-值映射关系数。

values()
返回此映射中包含的值的Collection视图

13.Map集合常用子类

        Hashtable:哈希表数据结构,键和值都不可为空,用作键的对象必须实现hashCode 方法和equals 方法,线程同步,jdk1.0开始使用

HashMap:哈希表数据结构,键和值都可为空,非线程同步,jdk1.2开始使用

TreeMap二叉树数据结构,可以根据集合的键排序

 

6.Map集合取出方式:

         Keyset:将集合中所有的键存入set集合,例:

Map<String,String> map = new HashMap< String , String >();
Set<String>key = map.keyset();
for(Iterator<String> it = key.iterator();it.hasnext();){
Stringvalue = map.get(it.next());
}

         entryset: 将集合中的映射关系的存入Set 视图。

Map<String,String> map = new HashMap< String , String >();
Set< Entry < String,String >>key = map.entryset();
for(Iterator< Entry < String,String >> it = key.iterator();it.hasnext();){
Entry< String,String> entry = map.get(it.next());
String key = entry.getKey();
String value = entry.getValue();
}


7.注意Map集合中嵌套Map的情况
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值