hashMap与LinkedHashMap与hashTable
hashMap与LinkedHashMap与hashTable
package demo; import java.util.*; public class demo4 { public static void main(String[] args) { /*这两种返回值的差异以及有什么用*/ HashMap<Integer,Integer> hashMap = new HashMap<>(); Hashtable<Integer,Integer> hashTable = new Hashtable<>(); Map<Integer,Integer> hashMap1 = new HashMap<>(); LinkedHashMap<Integer, Integer> linkedHashMap = new LinkedHashMap<>(); /*新建一个数组*/ int [] nums =new int[]{1,2,3,3,4,5,6,7,8,9,98}; /*遍历数组,为每一个数组的元素加上索引值1*/ for (int num : nums) { hashMap.put(num,1); } System.out.println(hashMap); for (int num : nums) { hashMap1.put(num,1); } System.out.println(hashMap1); for (int num : nums) { hashTable.put(num,1); } System.out.println(hashTable); for (int num : nums) { linkedHashMap.put(num,1); } System.out.println(linkedHashMap); /*为什么少一个3,因为map集合保证了key的唯一性 * hashmap没有顺序 * LinkedHashMap继承了hashMap,有顺序的*/ /*{1=1, 2=1, 98=1, 3=1, 4=1, 5=1, 6=1, 7=1, 8=1, 9=1} */ /*接下来把hashmap所有的方法都用一边*/ /*总结下有哪些方法 * 1.containsKey containsValue isEmpty() 判断是否有值有键有内容 * 2.查询所有的键或者所有的值entrySet() keySet() * 3.针对特定的键得到特定的值get * 4.求得map有几个值 * 5. 删除hashmap中的值 * */ // boolean b = hashMap.containsKey(1); // System.out.println(b); // boolean b1 = hashMap.containsValue(2); // System.out.println(b1); // hashMap.get(3); // // Set<Map.Entry<Integer, Integer>> entries = hashMap.entrySet(); // for (Map.Entry<Integer, Integer> entry : entries) { // System.out.println(entry); // // } // boolean empty = hashMap.isEmpty(); // System.out.println(empty); // Set<Integer> integers = hashMap.keySet(); // for (Integer integer : integers) { // System.out.println(integer); // } // hashMap.size(); // hashMap.remove("98"); // System.out.println(hashMap); // } }
- 因为算法题中经常使用hashMap,LinkedHashMap,hashTable.一次性全部回顾一遍
- 第一种无序,key唯一,多线程,可以存NULL键
- 第二种有序
- 第三种,线程安全,单线程,不能存储NULL键
- 第三种,线程安全,单线程,不能存储NULL键,最早出现现在被取代。因为多线程的快一些
- 里面的properties集合是唯一和IO流相结合的集合
这里通过代码演示,回顾了所有的API