关于Collection(Set,List)和Map接口

Collection两个子接口:list,set子。
Collection与Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对。(转自别人的这句话,我自己比较认同)


Set接口:存储一种唯一(不允许重复),无序的对象。
List接口:存储一种不唯一(允许重复),有序的对象。
Map借口:存储一种成对的键值对象,提供key键到value值的映射。key不要求有序,不允许重复,value允许重复,不要求有序。

这里说说Map中的null情况:看代码

// Map的泛型
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "java");
        map.put("2", "c#");
        map.put("3", "html5");
        map.put(null, "study");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "  " + entry.getValue());
        }
        System.out.println("数量:" + map.size());

结果:

null  study
3  html5
2  c#
1  java
数量:4

修改代码:

// Map的泛型
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "java");
        map.put("2", "c#");
        map.put("3", "html5");
        map.put(null, "study");
        map.put(null, "study1");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "  " + entry.getValue());
        }
        System.out.println("数量:" + map.size());

结果:

null  study1
3  html5
2  c#
1  java
数量:4

可以发现:null可以作为键,这样的键只有一个,并且是最后的那个key为null的;
但是编写代码时可以有一个或多个键所对应的值为null。


通过get()方法获取键值时,由于存在null的键值,Map中不能由get()方法来判断Map中是否存在某个键,改用containsKey()方法。


继承List的类有:ArrayListLinkedList
继承Set的类有:HashSet,TreeSet
继承Map的类有:HashMap,HashTable,TreeMap
以上黑体是常用的

ArrayList长度每次增长50%
关于LinkedList特有的方法:addFirst(Object o) ,addLast(Object o),Object getFirst(),Object getLast(),Object removeFirst(),Object removeLast()
ArrayList PK LInkedList

  1. 都容纳所有类型对象,包括null,允许重复,保证元素存储顺序。
  2. ArrayList遍历元素和随机访问元素的效率比较高。
  3. LinkedList在于插入,删除元素时效率比较高。
  4. 在ArrayList 之前存在Vector是线程安全的,效率低,长度默认增长一倍。而ArrayList 线程非安全的,重速度,长度增长50%。

HashMap:Map的实现类,缺省情况下是非同步的,可以通过Map Collections.synchronizedMap(Map m)来达到线程同步
HashTable:Dictionary的子类,确省是线程同步的。不允许关键字或值为null

TreeMap:元素的顺序很重要时选用,当元素不必以特定的顺序进行存储时,使用HashMap。
Hashtable的使用不被推荐,HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。


Iterator :为集合而生,遍历集合。隐藏各种集合实现类内部细节,提供遍历集合统一编程接口。遍历方法后续补上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值