java 的集合框架

java 中的集合分为 Collection 和 Map 两种接口,Collection是单列集合,Map是双列集合。

Collection单列集合:继承了Iterator接口所以具有了iterator()方法 ,该方法返回一个Iterator,这个接口具有 hasNext (),next(),remove() 3个方法可以在实现类里完成实现。

Collection 有两个子接口 set 和 list。

set:储存唯一,不要求有序的对象;
set存储的是元素的引用,如两个元素的引用相等,或者其值相等,hash值也相等,则set只保存一个,同理set集合中只有一个null;

list:存储不唯一,但有序的对象
list的两个实现类:
ArrayList:与数组相同的存储方式,但是存储集合的大小可变,比数组更灵活。
LinkedList:链式储存,集合的每一项都储存了下一项的引用,更利于元素的新增和删除操作。
ArrayList 查询和修改快,LinkedList新增和删除快。

其实在ArrayList之前还有一个 Vector 集合类,它与ArrayList基本相同,最大的区别就是Vector是线程安全的,而ArrayList是线程不安全的。
ArrayList 线程不安全,而速度快,Vector 线程安全,但速度慢。

Map:双列集合,集合中的每一项都是成对的key、value。
Map接口并不继承Iterable接口或实现该接口所以不能直接进行遍历
key:有唯一,不要求有序
value:不唯一,不要求有序
Map集合遍历的三种方法:

    public static void main(String[] args) {

          Map<String,String> map=new HashMap<String,String>();
          map.put("CN", "中华人民共和国");
          map.put("UK","联合国");
      
        //方法1 双列集合无法遍历了?那就通过方法把他转成单列 ! 用集合名.entryset方法 得到Set<Entry<String, String>>的返回值
          for (Entry item : map.entrySet()) {
            System.out.println(String.format("key的值是%s\tvalue的值是%s",item.getKey(),item.getValue()));
          }
          
        //方法2 通过得到key键的集合,然后通过Map的方法map.get(key)用key得到value
          for (String key : map.keySet()) {
            System.out.println(String.format("key的值是%s\tvalue的值是%s",key,map.get(key)));
          }

          //方法3for循环中自动实现了迭代器,如不用for循环,那就手动完成迭代器操作
          Iterator<String> keys=map.keySet().iterator();
          while(keys.hasNext()){
             String item=keys.next();
              System.out.println(String.format("key的值是%s\tvalue的值是%s",item,map.get(item)));
          }  
    }

如果只是想遍历value的值那直接使用 map.values()方法就行了。

posted on 2017-07-27 18:54  cag2050  阅读(163)  评论(0编辑  收藏  举报

导航