学习Java第二十五天--集合框架之Map集合

12.5 Map体系集合

12.5.1 Map结构

  • Map接口的特点:
    用于存储任意键值对(Key-Value);
    键:无序、无下标、不允许重复(唯一);
    值:无序、无下标、允许重复;

12.5.2 Map父接口

  • 特点:存储一对数据(Key-Value),无序、无下标、键不可重复,值可重复;
  • 方法:
    V put(K key , V value) //将对象存入到集合中,关联键值。key重复则覆盖原值;
    Object get(Object key) //根据键获取对应的值;
    Set //返回所有key;
    Collection values() //返回包含所有值的Collection集合;
    Set<Map.Entry<K , V>> //键值匹配的Set集合;

12.5.3 Map集合的实现类

  • HashMap【重点】:
    JKD1.2版本,线程不安全,运行效率快;允许用null作为key或者是value;
    HashMap算法:拿到任何一个对象,通过hash(key)做运算,key>>>16(除以16),只可能得到0~15之间的一个数组,作为插入数组的下标
import java.util.HashMap;

public class TestBasicHashMap {

	public static void main(String[] args) {
		
		HashMap<String , String> map = new HashMap<String , String>();

		map.put("CN", "中国");
		map.put("US", "美国");
		map.put("JP", "日本");
		map.put("KR", "韩国");
		map.put("IT", "意大利");
		
		map.put("CN", "中华人民共和国");//重复key进行覆盖
		
		
		String country = map.get("CN");
		//调用get(key)--->通过“CN”计算哈希,得到3,3这个下标上对比有没有“CN”这个key,
		//如果有则返回
		
		System.out.println(country);
		
		map.remove("IT");
		
		System.out.println(map);
	}

}

输出结果:

中华人民共和国
{JP=日本, KR=韩国, CN=中华人民共和国, US=美国}
null
  • Hashtable:
    JKD1.0版本,线程安全,运行效率慢;不允许null作为key或者value;
    和HashMap用法基本一样;
  • Properties:

Hashtable的子类,要求key和value都是String。
通常用于配置文件的读取;保存文件中的键值对、反射、JDBC

  • TreeMap:
    实现了SortedMap接口(是Map的子接口),可以对key自动排序。
    根据CompareTo的返回值去重;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class TestTreeMap {

	public static void main(String[] args) {
		
		Map<Integer , String> map = new TreeMap<Integer , String>();

		map.put(4, "Tom");
		map.put(2, "Jack");
		map.put(8, "Alex");
		map.put(3, "Rose");
		
		//混乱的插入方法,但TreeMap会根据CompareTo方法进对key行排序
		
		Set set = map.keySet();//获取key的序列
		Iterator ite = set.iterator();//返回此集合元素的迭代器
									  //Set和Map都是链式结构,可以使用迭代器
		while(ite.hasNext()) {//判断迭代中是否还有元素
			Object key = ite.next();//返回迭代中的下一个元素
			Object value = map.get(key);
			System.out.println(key + "  "+ value);
		}
	}

}

输出结果:

2  Jack
3  Rose
4  Tom
8  Alex

12.6 总结

  • 集合的概念:

对象的容器,存储对象的对象,定义了对多个对象进行操作的常用方法;

  • List集合:
    有序、有下标、元素可以重复。(ArrayList、LinkedList、Vector)

  • Set集合:
    无序、无下标、元素不可重复。(HashSet、LinkedHashSet、TreeSet)

  • Map集合:
    存储一对数据,无序、无下标,键不可重复,值可重复(HashMap、HashTable)

  • Collections:
    集合工具类,定义了除了存取以外的集合常用方法;

发布了35 篇原创文章 · 获赞 8 · 访问量 1518

猜你喜欢

转载自blog.csdn.net/weixin_44257082/article/details/104721906