zoukankan      html  css  js  c++  java
  • HashMap、Hashtable、TreeMap、Properties

    HashMap、Hashtable、TreeMap、Properties

    Map接口与Collection并列存在。用于保存具有映射关系的数据:key-value

    Map接口中的key和value都可以是任何引用类型的数据

    Map对象所对应的类,需要重写hashCode和equals方法

    常用String类作为Map的键

    key和value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的value。

    HashMap:

    hashMap是Map接口使用频率最高的实现类。

    允许使用null键和null值,与HashSet一样,不保证映射的顺序

    hashMap判断两个key相等的标准是:两个key通过equals方法的返回true,hashCode值也相等

    hashMap判断两个value相等的标准是:两个value通过equals方法返回true。

    package com.xatu.集合;
     
    import java.io.Externalizable;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
     
    import org.junit.Test;
     
    public class MapTest {
    	@Test
    	public void testHashMap() {
    		Map<Integer, String> m = new HashMap<>();
    		m.put(2, "cc");
    		m.put(3, "aa");
    		m.put(6, "dd");
    		m.put(9, "f");
    		m.put(2, "cb");//键相同覆盖之前
    		m.put(null, null);
    		
    		System.out.println("容量:"+m.size());
    	String rs =	m.remove(3);//删除词条
    		System.out.println(rs);
    		System.out.println("查找value:"+m.containsValue("ghg"));
    		System.out.println("查找key:"+m.containsKey(5));
    		System.out.println("之后的"+m.size());
    		
    		//先获取所有的键
    		Set<Integer> s = m.keySet();
    		Iterator<Integer> it = s.iterator();
    		while (it.hasNext()) {
    			Integer key =  it.next();
    			String value = m.get(key);
    			System.out.println("键:"+key+"值:"+value);
    			
    		}
    		System.out.println("-----------");
    		Set<Map.Entry<Integer, String>> ent = m.entrySet();
    		for (Entry<Integer, String> entry : ent) {
    			System.out.println("键:"+entry.getKey()+"值:"+entry.getValue());
    		}
    	}
    }
    

    LinkedHashMap:

    LinkedHashMap是hashMap的子类

    与LinkedHashSet类似,LinkedHashMap可以维护Map的迭代顺序:迭代顺序与Key-value对的插入顺序一致

    TreeMap

    TreeMap存储 Key-Value 对时,需要根据 key-value 对进行排序。TreeMap 可以保证所有的 Key-Value 对处于有序状态。

    TreeMap 的 Key 的排序:

    自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有的 Key 应该是同一个类的对象,否则将会抛出 ClasssCastException

    定制排序:创建 TreeMap 时,传入一个 Comparator 对象,该对象负责对 TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现 Comparable 接口

    TreeMap判断两个key相等的标准:两个key通过compareTo()方法或者compare()方法返回0。

    若使用自定义类作为TreeMap的key,所属类需要重写equals()和hashCode()方法,且equals()方法返回true时,compareTo()方法应返回0。

    Hashtable:

    Hashtable是个古老的 Map 实现类,线程安全。

    与HashMap不同,Hashtable 不允许使用 null 作为 key 和 value

    与HashMap一样,Hashtable 也不能保证其中 Key-Value 对的顺序

    Hashtable判断两个key相等、两个value相等的标准,与hashMap一致。

    Properties:

    Properties 类是 Hashtable 的子类,该对象用于处理属性文件

    由于属性文件里的 key、value 都是字符串类型,所以 Properties 里的 key 和 value 都是字符串类型

    存取数据时,建议使用setProperty(String key,String value)方法和getProperty(String key)方法

  • 相关阅读:
    Hive小结
    Redis小结
    Hbase小结
    Rdd/DataFrame/DataSet 小结
    spark杂记2
    shiyan
    stanford推荐阅读目录
    超市收银系统之——3
    超市收银系统之超市类——4
    超市收银系统_仓库类——2
  • 原文地址:https://www.cnblogs.com/athony/p/13435170.html
Copyright © 2011-2022 走看看