Java_Map集合LinkedHashMap

  P地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,把它称之为映射。Java当中提供了专门的集合类用来存放这种映射关系的对象。

  • Collection中的集合,元素是孤立存在的(单身),向集合中存储元素采用一个一个元素存储的方式进行存储。

  • Map中的集合,元素是成对存在的(夫妻),每个元素由键和值两部分组成。通过键可以找到对应的值。

  • Collection中的集合我们称之为单列集合,Map中的集合我们称之为双列集合

  • ****:Map中的集合不能包含重复的键,值可以重复,每个键对应唯一一个值。

Map中的常用子类

  • HashMap:存储数据采用的哈希表结构,元素的存取顺序可能不一致,由于要保证键的唯一性,不重复,需要重写键的hashCode方法和equals方法。

  • LinkedHashMap:HashMap下面有个子类LinkedHashMap,存储数据的方式是采用哈希表结构+链表结构,通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证键的唯一、不重复,需要重写键的hashCode方法和equals方法。

  ***Map接口当中,含有两个泛型变量,在使用时,要为两个泛型变量赋予数据类型,两个泛型变量的数据类型可以相同,也可以不同。

Map接口当中的常用API方法Map<K,V>

常用方法:

  • public V put(K key,V value):把指定的键与指定的值添加到Map集合当中

  • public V remove(Object key):把指定的键所对应的键值对元素从Map集合当中删除,返回被删除元素的值

  • public V get(Object key):根据指定的键 获得在Map集合当中对应的值

  • public Set<K> keySet(): 获取Map集合当中的所有的key值,存储到Set集合当中

  • public Set<Map.Entry<K,V>> entrySet():获取到Map集合当中的所有的键值对对象的集合(Set集合)

HashMap存储自定义类型键值

  当给HashMap中存储自定义对象时,如果自定义对象作为key存在,这时要保证对象的唯一性,必须重写对象的hashCode和equals方法

如果要保证map中存储元素的顺序。主要体现在key值,可以用LinkedHashMap集合来存放

  ***HashMap保证成对元素的唯一,并且查询速度相对较快,但是成对元素存放进去无法保证顺序,既要保证有序,又要保证速度快可以使用LinkedHashMap

HashTable

java.util.Hashtable<K,V> implements Map<K,V>接口

  • Hashtable:底层是一个哈希表,是一个线程安全的集合,是单线程的集合,速度慢

  • HashMap: 底层也是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快

  • HashMap集合:可以存储null key值,null value值

  • Hashtable集合:不可以存储null值,null键

  • Hashtable 和 Vector集合一样,在JDK1.2版本之后被更先进的集合(HashMap,ArrayList)取代了

  • Hashtable有一个子类Properties依然活跃在历史的舞台上

  • Properties集合是一个唯一和IO流相结合的集合

计算一个字符串中每个字符出现的次数
public static void show() {
        LinkedHashMap<Character, Integer> map = new LinkedHashMap<>();
        String s = "hellowordhelloword";
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (map.get(c) == null) {
                map.put(c, 1);
            } else {
                map.put(c, map.get(c) + 1);
            }
        }
        System.out.println(map);
    }
原文地址:https://www.cnblogs.com/9080dlb/p/14123342.html