A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李明全 中级黑马   /  2015-4-26 21:50  /  316 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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集合中的健进行排序。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马