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
安克创新 Anker公司福利 814人发布
