`
sungang_1120
  • 浏览: 309892 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

JAVA集合学习(一)认识Map之LinkedHashMap

 
阅读更多

Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注 意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)

此实现可以让客户避免未指定的、由 HashMap(及 Hashtable)所提供的通常为杂乱无章的排序工作,同时无需增加与 TreeMap 相关的成本。使用它可以生成一个与原来顺序相同的映射副本,而与原映射的实现无关:

 

package com.sg.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class TestLinkedHashMap {
	// 分别使用2个类,进行相同的数据测试
    // 可以看到,HashMap的顺序是不可预测的
    // 而LinkedHashMap的顺序严格按照插入顺序
	public static void main(String[] args) {
		testMap(new HashMap());
		testMap(new LinkedHashMap());
	}
	
	
	public static void testMap(Map map){
		for(int i = 98; i <= 102; i++){
			map.put(i, i);
		}
		if (map instanceof HashMap) {
			System.out.println("HashMap最初始的值是》:"+map);
		}
		if (map instanceof LinkedHashMap) {
			System.out.println("LinkedHashMap最初始的值是》:"+map);
		}
		
		showMap(map);
		
		//尝试重复插入数据
		map.put(100, 100);
		showMap(map);
		
		System.out.println("删除前size:"+map.size());
		map.remove(100);
		System.out.println("删除后size:"+map.size());
		map.put(100, 100);
		showMap(map);
	}
	
	public static void showMap(Map map){
		Iterator iterator = map.keySet().iterator();
		Object key ;
		while(iterator.hasNext()){
			key = iterator.next();
			System.out.print("key:"+key+"-->"+"value:"+map.get(key)+" ");
		}
		System.out.println();
	}
}

 

运行效果如下:



 

  • 大小: 93.3 KB
分享到:
评论

相关推荐

    深入Java集合学习系列(四):LinkedHashMap的实现原理

    深入Java集合学习系列(四): LinkedHashMap的实现原理

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java集合-LinkedHashMap的使用

    LinkedHashMap是Java中的一种特殊类型的HashMap,它保留了插入顺序,即按照元素插入的先后顺序进行排序

    Java集合框架Map接口.pdf

    Java集合框架中的Map接口表示一种键值对(key-value)的数据结构,其中每个元素都包含一个唯一的键和对应的值。在Map中,每个键必须是唯一的,而值可以重复。Map接口提供了一些方法来实现基本的键值对操作,例如添加...

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    java集合类原理面试题

    java集合类 Java中有哪些容器(集合类)? 线程安全和线程不安全的分别有哪些? Map接口有哪些实现类? 描述一下Map put的过程 如何得到一个线程安全的Map? HashMap有什么特点? ConcurrentHashMap是怎么分段分组...

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...

    Map接口整合

    java.util.map接口,Java集合框架,hashmap、LinkedHashMap

    java集合框架 解析

    java集合框架 3.6. LinkedHashSet类 4. Map接口 4.1. Map.Entry接口 4.2. SortedMap接口 4.3. AbstractMap抽象类 4.4. HashMap类和TreeMap类 4.4.1. HashMap类 4.4.2. TreeMap类 4.5. LinkedHashMap类 4.6. ...

    超全Java集合框架讲解.md

    超全Java集合框架讲解 - 超全Java集合框架讲解 - 集合框架总览 - Iterator Iterable ListIterator - Map 和 Collection 接口 - Map 集合体系详解 - HashMap - LinkedHashMap - TreeMap - WeakHashMap - ...

    Java集合框架完整说明便于了解集合

    java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...

    Java Map 按照Value排序的实现方法

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下

    【后端】java基础(4.4)java中级基础之集合——Map

    Map虽然也叫集合,但是它却不是Collection的子接口。它的底层结构是链表散列,也就是一个数组结构然后每个数组结构里包含的一个链表。我们平常直接叫它“键值(key——value)”结构。 map的实现接口有有不少,比如...

    基础深化和提高-java容器

    在Java中,容器(Container)指的是...Map用于存储键值对(Key-Value Pair)的数据,它的实现类有HashMap、TreeMap、LinkedHashMap等。Map中的键是唯一的,每个键对应一个值。通过键可以快速查找对应的值,这使得Map

    Java 基础核心总结 +经典算法大全.rar

    -、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 Set 接口 AbstractSet 抽象类SortedSet 接口...

    java jdk实列宝典 光盘源代码

    java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;判断一个字符串是否是合法的java标识符;使用StringBuffer;...

    java-immutable-collections:Java的高效ImmutablePersistent集合

    Java库的不可变集合(JImmutable Collections)是一组高性能的不可变集合,用于替换或补充标准的java.util集合。 为每个最常用的集合提供功能替换: Java类 JImmutable接口 工厂方法 数组列表 JImmutableList ...

    java基础案例与开发详解案例源码全

    11.1 Java集合框架概述264 11.2 Collection接口264 11.2 Set接口实现类266 11.2.1 实现类HashSet267 11.2.2 实现类LinkHashSet270 11.2.3 实现类TreeSet272 11.3 List接口实现类277 11.3.1 实现类ArrayList277 ...

    DataStructureJava:主要数据结构——java中的简单实现

    数据结构Java 主要数据结构——java中的简单实现如何使用集合:-&gt; JDK(Java集合)-&gt; Guava(谷歌)-&gt; Commons-collections(Apache) 主要抽象数据结构——ADS列表(ArrayList、LinkedList、Vector)栈(FIFO)队列...

    高级java笔试题-ShiftJava:学到头秃的Java的小笔记

    集合容器类:队列、列表、栈、Map、Set 等结构,含 ArrayList、LinkedList、ArrayDeque、PriorityQueue、HashMap、LinkedHashMap、TreeMap 及并发容器类等。 3. 并发 并发:线程基础、JMM、AQS、CAS、锁与线程安全...

Global site tag (gtag.js) - Google Analytics