JAVA基础知识|集合

一、集合框架


Collection接口:没有提供直接的实现类,但是却被继承产生了三个重要的接口List、Set、Queue。

Map接口:和Collection接口没有直接的关系,但都属于集合类中的一部分。

Iterator接口:所有的集合类都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含三个方法:hasNext()、next()、remove()。

二、几种常见的接口及类

List及其实现类:存放的对象是有序的,可以重复,查询速度快,但是插入和删除速度较慢,因为要伴随着后面数据的移动。

Set及其实现类:存放的对象是无序的(TreeSet除外),不可以重复。

Map及其实现类:存放的对象是无序的(TreeMap除外),存放的内容为键值对,键不可以重复,值可以重复。根据键获取值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

三、Map集合的四种遍历方式

        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "value1");
        map.put("2", "value2");
        map.put("3", "value3");

        //第一种:效率低,二次取值
        System.out.println("通过Map.keySet遍历key和value:");
        for (String key : map.keySet()) {
            System.out.println("key= "+ key + " and value= " + map.get(key));
        }

        //第二种
        System.out.println("通过Map.entrySet使用iterator遍历key和value:");
        Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = it.next();
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }

        //第三种:推荐,尤其是容量大时
        System.out.println("通过Map.entrySet遍历key和value");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
        }

        //第四种
        System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
        for (String v : map.values()) {
            System.out.println("value= " + v);
        }

四、常见集合之间的区别

HashTable与HashMap
1、同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。
2、HashMap允许存在一个为null的key,多个为null的value 。
3、hashtable的key和value都不允许为null。

原文地址:https://www.cnblogs.com/maikucha/p/8882237.html