Collection是最基本的集合接口,声明了适用于JAVA(List和Set)集合的通用方法
collection接口的方法:add()、clear()、iterator()、remove()、toArray()等(详细查阅API)。
Iterator接口声明方法:hasNext()、next()、remove()。
Set是最简单的一种集合,无序,没有重复对象。
Set接口主要实现了两个实现类:
原理:当元素需要存进哈希表之前,先会计算这个元素的哈希值,存到对应的位置上,当其他的元素与前面元素哈希值相同 时,会去使用equals方法进行判断,两个元素的内容是否一致,如果内容不一致,则使用拉链法存储元素。hashCode() equals()
原理:使用对象的比较方法,如果对象的比较方法返回为0,则视为元素重复,则不存储。
Set的用法:存放的是对象的引用,没有重复对象。
List的特征是其元素以线性方式存储,集合中可以存放重复对象。
List接口主要实现类包括:
LinkedList具有以下方 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
堆栈:先进后出 First In Last Out 队列:先进先出 First In First Out
map是一种把键对象和值对象映射的集合,他的每一个元素都包含一对键对象和值对象。Map没有继承于Collection接口,从Map集合中检索元素时候,只要给出键对象,就会返回对应的值对象。
map中的方法:
put(键,值): put方法返回的value是返回键对应的旧值,如果没有则返回null,map集合如果键相同,值就会覆盖。
get(键):通过给定的键获取对应的值,如果键不存在,返回null。
remove(键):删除元素,一次删一对
获取map集合中的所有的数据:
1.keySet():获取map中所有的键,方法返回set集合,因为map中的键是惟一的。
有了所有的键,便可以通过迭代器或者使用foreach取出其中所有的值。 2.entrySet():返回set集合,Set<Map.Entry<K,V>>。
例:Set<Map.Entry<String,String>> entrySet = map.entrySet();
//用迭代器
Iterator<Map.Entry<String,String>> it= entrySet.iterator();
while(it.hasNext()){
//遍历set集合中的映射关系
Map.Entry<String,String> me = it.next();
//通过映射关系获取所有的键和值
String key =me.getKey();
String value=me.getValue();
}
//用foreach
for(Map.Entry<String,String> me : map.entrySet()){
String key =me.getKey();
String value = me.getValue();
}
map中的实现类:
Collection :
--List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
--ArrayList / LinkedList / Vector
--Set:不能含有重复的元素
--HashSet / TreeSet
Map:
--HashMap
--HashTable
--TreeMap
特征:
List,Set,Map将持有对象一律视为Object型别。
Collection、List、Set、Map都是接口,不能实例化。
继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
总结:
1. 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
2. 如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
3. 在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们 的效率更高。
4. 要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
Reference:
https://blog.csdn.net/SpeedMe/article/details/22398395?utm_source=distribute.pc_relevant.none-task
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有