LinkedHashMap集合和Hashtable集合
2022/7/6 23:21:01
本文主要是介绍LinkedHashMap集合和Hashtable集合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
LinkedHashMap集合
我们知道HashMap保证成对元素唯一,并且查询速度很快,可是成对元素存放进去是没有顺序的,那么我们要保证有序,还要速度快怎么办呢?
在HashMap下面有一个子类LinkedHashMap,它是链表和哈希表组合的一个数据存储结构。
java.util.LinkedHashMap<K,V>entends HashMap<K,V>
Map接口的哈希表和链接列表实现,具有可预的迭代顺序。
底层原理:
哈希表+链表(记录元素的顺序)
public static void main(String[] args) { HashMap<String,String>map = new HashMap<>(); map.put("a","a"); map.put("c","c"); map.put("b", "b"); map.put("a" , "d"); System.out.println(map); LinkedHashMap<String,String> linked = new LinkedHashMap<>( ); linked .put("a" , "a" ) ; linked.put( "c" , "c"); linked.put("b","b"); linked.put("a" ,"b"); System.out.println(linked); }
package hashlinkedmap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; public class Deno1 { public static void main(String[] args) { //创建Map集合 Map map = new LinkedHashMap<>(); map.put("1", "网易云"); map.put("2", "qq"); map.put("3", "cc"); //获取所有键 Set set = map.keySet(); Iterator it = set.iterator(); while (it.hasNext()) { Object key = it.next(); Object value = map.get(key); System.out.println("键:" + key + '\t' + "值:"+ value); } } }
Hashtable集合
java.util.Hashtable<K,V>集合implements Map<K,V>接口
Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢
HashNap:底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
HashMap集合(之前学的所有的集合):可以存储null值, nulL键
Hashtable集合,不能存储null值,nut键
HashtabLe和vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap, ArrayList)取代了
Hashtable的子类Properties依然活跃在历史舞台
Properties集合是一个唯—和I0流相结合的集合
HashMap<String, String> map = new HashMap<>(); map.put(null, "a"); map.put("b", null); map.put(null, null); System.out.println(map); Hashtable<String, String> table = new Hashtable<>(); //table.put(nuLl, "a");//NuLlPointerException //table.put( "b" , null); //NulLPointerException table.put(null, null); //NuLLPointerException
public static void main(String[] args) { Hashtable<String, Integer> hashtable = new Hashtable<>(); hashtable.put("奥迪", 380000); hashtable.put("大众", 180000); hashtable.put("奔驰", 450000); hashtable.put("宝马", 500000); hashtable.put("凯迪拉克", 430000); //遍历方法一:entrySet System.out.println("————————entrySet方式遍历————————"); Set<Map.Entry<String, Integer>> entrySet = hashtable.entrySet(); for (Map.Entry<String, Integer> entry : entrySet) { System.out.println(entry.getKey()+"\t"+entry.getValue()); } //键值相同则替代value,并返回原来的Value hashtable.put("奥迪", 350000); //存入键相同的键值对相当于替换 hashtable.replace("大众", 300000); hashtable.replace("奔驰", 450000, 480000);//使用新值替换老值 //存储键和值都是null值的元素 //删除 hashtable.remove("凯迪拉克");//直接通过键来删除映射关系 hashtable.remove("宝马", 500000);//通过完整的键值对删除映射关系 //遍历方法二:KeySet System.out.println("————————KeySet方式遍历————————"); Set<String> keySet = hashtable.keySet(); for (String key : keySet) { System.out.println(key+"\t"+hashtable.get(key)); } }
这篇关于LinkedHashMap集合和Hashtable集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南