集合的存与取3

一、map集合的特点:

1.map集合是一个双列集合,一个元素包含二个值(key,values);

2.map集合中的元素,key和values的数据类型可以相同,也可以不同;

3.map集合中的元素,key值不可以重复,values值是可以重复的

4.map集合中的元素,key值和values值是一一对应的;

二、hashMap 集合的特点:

1.hasMap集合底层是哈希表,查询速度特别快;

2.hasMap集合是一个无序的集合,存储元素和取出元素的顺序可能不一致;

三、linkedhashMap的特点;

1.linkedhashMap集合底层是哈希表+链表(保证迭代顺序)

2.linkedhashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的;

四,map集合的存与取

public class MapDemo {
    public static void main(String[] args) {
        //创建Map对象
        Map<String, String> map = new HashMap<String,String>();
        //给map中添加元素
        map.put("邓超", "孙俪");
        map.put("李晨", "范冰冰");
        map.put("刘德华", "柳岩");
        //获取Map中的所有key与value的对应关系
        Set<Map.Entry<String,String>> entrySet = map.entrySet();
       //遍历Set集合
        Iterator<Map.Entry<String,String>> it =entrySet.iterator();
        while(it.hasNext()){
            //得到每一对对应关系
            Map.Entry<String,String> entry = it.next();
            //通过每一对对应关系获取对应的key
            String key = entry.getKey();
            //通过每一对对应关系获取对应的value
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
    }
}

五、hasmap自定义存储

public class Student {

private String name;

private int age;

//编写构造方法,省略

//编写get,set方法,省略

//编写toString方法,省略

}
public class HashMapTest {
    public static void main(String[] args) {
        //1,创建hashmap集合对象。
        Map<Student,String> map = new HashMap<Student,String>();
        
        //2,添加元素。
        map.put(new Student("lisi",28), "上海");
        map.put(new Student("wangwu",22), "北京");
        map.put(new Student("zhaoliu",24), "成都");
        map.put(new Student("zhouqi",25), "广州");
        map.put(new Student("wangwu",22), "南京");
        
        //3,取出元素。键找值方式
        Set<Student> keySet = map.keySet();    
                 for(Student key : keySet){
            String value = map.get(key);
            System.out.println(key.toString()+"....."+value);
        }
        
        //取出元素。键值对方式
        Set<Map.Entry<Student, String>> entrySet = map.entrySet();
        for (Map.Entry<Student, String> entry : entrySet) {
            Student key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key.toString()+"....."+value);
        }
    }
}

当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须重写对象的hashCode和equals方法(如果忘记,请回顾HashSet存放自定义对象)。

如果要保证map中存放的key和取出的顺序一致,可以使用LinkedHashMap集合来存放。

posted @ 2020-04-28 11:51  丿狂奔的蜗牛  阅读(213)  评论(0编辑  收藏  举报