黑马程序员技术交流社区
标题:
集合的应用
[打印本页]
作者:
李明全
时间:
2015-4-26 21:50
标题:
集合的应用
List(ArrayList,LinkedList,vector),Set(HashSet,TreeSet),
Map(HashMap、HashTable、TreeMap)
(说出整个体系,我自己总结的,不定正确,发现问题自己改)
集合是存储对象最常用的一种方式,集合层次中的根接口是Collection,它有两个子接口List和Set,List里面的元素是有序的,集合有索引,所以
元素可以重复,Set集合元素不能重复,无序无索引。List集合可分为ArrayList,LinkedList
vector,Vector是同步的,底层是数组结构,增删速度都慢,
集合ArrayList底层也是数组结构,查询速度快,增删速度慢,LinkedList底层是链表结构,增删速度快,查询速度超慢。
Set集合分为HashSet和TreeSet,HashSet底层是哈希表,哈希表底层使用的也是数组机
制HashSet里面保证对象的唯一性是通过元素的两个方法HashCode和equals
总结:保证元素的唯一,其实就是根据对象的hashCode和equals方法来决定的。如果我们往集合中存放自定义的对象,那么保证其唯一,就必须复写hashCode
和equals方法建立属于当前对象的比较方式。
TreeSet的底层是二叉树结构,往TreeSet里面存对象的时候,他会进行排序,如果存入的对象没有比较的功能,
则必须实现一个comparable接口,覆盖compareTo方法,这种方式也叫元素的自然顺序,也叫默认顺序。,存放的数据由key和value组成,key不能重复,value可以重复,由于Map里面没有迭代器,只有获得
Set集合才能迭代。
第一种方式
HashMap<String,string> map = new HashMap();
map.put("zhangsan","上海");
map.put("sili","上海");
map.put("wangwu","上海");
Set<String> set = map.keySet<>(); keySet获取map集合中的所有key值,组成一个Set集合
for(Iterator<String>() it = set.iterator<>();it.hasNext();){
String key = it.next();
String value = map.get(key); get方法,通过key值找到对应的value值。
sop(key+value);
第二种方式(有8人面试被问过用泛型写出)
Set<Entry<String,String>> entrySet = map.entrySet(); entrySet把每一对封装成对象
for(Iterator<Entry<String,String>>) it = entry.iterator;it.hasNext;){
Entry<String,String> entry=it.next;
String key=entry.getKey();
String value = entry.getValue();
Map有哪些常用类,各有什么特点?
Map集合下有HashMap、HashTable、TreeMap三个子接口。
HashTable:底层数据结构是哈希表,不可以存入空健和空值。线程同步。基于老的,被HashMap取代
HashMap底层的数据结构也是哈希表。可以存入空健空值。线程非同步。取代了HashTable(基于老的类)
TreeMap底层的数据结构是二叉树。线程非同步,也可以用于给Map集合中的健进行排序。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2