Java 集合类学习之Map

package com.fish.map;
import java.util.HashMap;
import java.util.Map;

/*
在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如: 

民政局 :
键         值
老公        老婆
***      人
一把要锁     锁
双列集合:
-------------| Map  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。
----------------| HashMap 
----------------| TreeMap
----------------| Hashtable 
 
 Map接口的方法:
 
 添加:
 put(K key, V value) 
 putAll(Map<? extends K,? extends V> m) 
 
 删除
 remove(Object key) 
 clear() 
 
 获取:
 get(Object key) 
 size() 
 
 判断:
 containsKey(Object key) 
 containsValue(Object value) 
 isEmpty() 
 
 */
 
 
public class Demo2 {
    public static void main(String[] args) {
    
        Map<String,String> map = new HashMap<String, String>();
        
        //添加方法
        map.put("杨过","小龙女");
        map.put("郭靖","黄蓉");
        map.put("张无忌","周芷若");
        
        /*
       
        //添加
        System.out.println("返回值:"+map.put("张无忌","赵敏"));  //如果之前没有存在该键,那么返回的是null,如果之前就已经存在该键了,那么就返回该键之前对应的值。并将新的value添加进map中
        
        Map<String,String> map2 = new HashMap<String, String>();
       	map2.put("令狐冲", "任盈盈");
		map2.put("段誉", "王语嫣");;
        map.putAll(map2); // 把map2的元素添加到map集合中。
        */
       
        /*
        //删除
        System.out.println("删除的数据是:"+map.remove("郭靖")) ;  //根据键删除一条map中的数据,返回的是该键对应的值。
        map.clear(); //清空集合中的所有数据。
        */
       
        /* 获取
        System.out.println("根据指定 的键获取对应的值:"+ map.get("段誉"));
        System.out.println("获取map集合键值对个数:"+map.size());
       
        //判断
        System.out.println("判断map集合是否包含指定的键:"+ map.containsKey("张无忌"));
        System.out.println("判断map集合中是否包含指定 的值:"+ map.containsValue("周芷若"));
        
        map.clear();
        map.put(null,null) //null不是Empty
        System.out.println("判断map集合是否为空元素:"+ map.isEmpty());
        */
        
        System.out.println("集合的元素:"+ map);
        
    }
}
package com.fish.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
迭代:
keySet() 
values() 
entrySet() 
*/
public class Demo3 {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<String, String>();
        //添加方法
        map.put("杨过","小龙女");
        map.put("郭靖","黄蓉");
        map.put("张无忌","周芷若");
        map.put("段誉", "王语嫣");;  
              
        /*
        //map集合中遍历方式一: 使用keySet方法进行遍历 缺点: keySet方法只是返回了所有的键,没有值。 
        Set<String> keys = map.keySet(); //keySet() 把Map集合中的所有键都保存到一个Set类型 的集合对象中返回。
        Iterator<String> it = keys.iterator();
        
        while(it.hasNext()){
            String key = it.next();
            System.out.println("键:"+ key+" 值:"+ map.get(key));
        }
        
        //map集合的遍历方式二: 使用values方法进行 遍历。 缺点: values方法只能返回所有 的值,没有键。
        Collection<String>  c = map.values(); //values() 把所有的值存储到一个Collection集合中返回。
        Iterator<String> it = c.iterator();
        
        while(it.hasNext()){
            System.out.println("值:"+ it.next());
        }
        */
        
        //map集合的遍历方式三: entrySet方法遍历。
       
        Set<Map.Entry<String,String>>  entrys = map.entrySet(); 
        
        Iterator<Map.Entry<String,String>> it = entrys.iterator();
       
        while(it.hasNext()){
            Map.Entry<String,String> entry = it.next();
            System.out.println("键:"+ entry.getKey()+" 值:"+ entry.getValue());
        }
    }
}
package com.fish.map;
import java.util.ArrayList;
class Map{
    //静态内部类 
    static class Entry<K ,V>{
        K  key;
        V value;
    } 
}

public class Demo4 {
        public static void main(String[] args) {
    }
}
时间: 2024-08-03 08:09:46

Java 集合类学习之Map的相关文章

Java集合类学习笔记(各种Map实现类的性能分析)

HashMap和Hashtable的实现机制几乎一样,但由于Hashtable是一个古老的.线程安全的集合,因此HashMap通常比Hashtable要快. TreeMap比HashMap和Hashtable要慢(尤其在插入.删除key-value对时更慢),TreeMap中的key-value总是处于有序状态,无需专门进行排序操作. LinkedHashMap比HashMap慢一点,因为它需要维护链表来保持Map中key-value时的添加顺序. IdentityHashMap采用与HashM

Java集合类学习笔记(Map集合)

Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是Map接口的典型实现类,他们的关系类似于ArrayList和Vector的关系. HashMap和Hashtable的区别: Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现. Hashtable不允许使用null作为key和value,HashMap可以使用. Li

Java 集合类学习之HashMap

package com.fish.map; import java.util.HashMap; /* 双列集合: -------------| Map  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复. ----------------| HashMap  底层也是基于哈希表实现 的. HashMap的存储原理: 往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素 的哈希码值,然后经过运算就可以算出该 元素在哈希表

Java集合类学习总结

Java的集合类分为两个类型,Collection和Map,Collection又分为Set和List. 1. 集合类中元素是否相同 HashSet使用equals和HashCode两个函数共同决定 TreeSet使用comparable接口中的compareTo,或者comparator中的compare函数 ArrayList使用equals函数 HashMap中的key和HashSet相同,value使用equals函数 TreeMap中的key和TreeSet相同,value使用equa

Java 集合类学习之Vector

package com.fish.list; import java.util.Enumeration; import java.util.Vector; /* 集合 的体系: ------------| Collection 单例集合的根接口 ----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复.  -------------------| ArrayList  ArrayList 底层是维护了一个Object数组实现的. 特点:查询速度快

Java 集合类学习之HashSet

package com.fish.set; import java.util.HashSet; import java.util.Set; /* 集合 的体系: ------------| Collection 单例集合的根接口 ----------------| List  如果是实现了List接口的集合类,具备的特点: 有序,可重复.  -------------------| ArrayList  ArrayList 底层是维护了一个Object数组实现的. 特点: 查询速度快,增删慢.

Java 集合类学习之ArrayList

1.ArrayList的常用方法和原理 package com.fish.list; import java.util.ArrayList; /* 集合的体系: ----------| Collection 单列集合的根接口 ----------------| List 如果实现了List接口的集合类,具备的特点:有序,可重复. --------------------| ArrayList  ArrayList底层是维护了一个Object数组实现的,特点:查询速度快,增删慢. 什么时候使用Ar

Java 集合类学习之LinkedList

1.linkedList的方法和原理 package com.fish.list; import java.util.Iterator; import java.util.LinkedList; /* 集合的体系: ----------| Collection  单列集合的根接口 ----------------| List 如果实现了List接口的集合类,具备的特点: 有序,可重复. --------------------| ArrayList   ArrayList 底层是维护了一个Obj

Java集合类学习记录

被标记为transient的属性在对象被序列化的时候不会被保存int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = Arrays.copyOf(arr1, new_length);//Arrays是数组的工具类//ArrayList的转化为静态数组的toArray方法就是这个原理//ArrayList的扩容原理也是Arrays.copyOf()方法//新建了一个数组定义一个数组int[] a={3,1,4,2,5}; int[] b=a; 数组b只是对数组a的又一