`
hm4123660
  • 浏览: 278088 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Dea4ce76-f328-3ab2-b24a-fb268e1eeb75
数据结构
浏览量:69006
社区版块
存档分类
最新评论

java集合---Map接口

    博客分类:
  • Java
阅读更多

       Map使用键值对来存储数据,将键映射到值对象,一个映射不能包含重复的键,每一个键最多只能映射到一个值。Map接口的具体实现类:HashMap,Hashtable,TreeMap,LinkedHashMap

 

1)HashMap

    基于哈希表(哈希表学习地址)的Map接口实现。允许使用null值和null键,不保证映射的顺序,特别是不保证顺序恒久不变。它除了非同步和允许使用null外,与Hashtable大致相同。

 

HashMap实现原理:

 

1.HashMap默认数组大小为16,加载因子为0.75,当数组使用量达到数组长度*加载因子时,需要进行扩充。

 

 

2.HashMap是以数组为头,连接链表形成的(要计算key的hashcode值),根据散列值求出对象在哈希表的存储位置,相同位置上的多个数据以链表方式连接,每次先加入的对象放进链表头。

 

 

 

 

示例代码:

public static void main(String[] args){

	     Map<Integer, String>maps=new HashMap<Integer, String>();
	     maps.put(1,"小黑");
	     maps.put(2,"小白");
	     maps.put(null,null);
	     maps.put(10, "老王"); 
	     System.out.println("size: "+maps.size());
	     //根据key获取对象值
	     System.out.println(maps.get(10));
	     //是否存在此键
	     System.out.println(maps.containsKey(2));
	     //是否存在此值
	     System.out.println(maps.containsValue(null));
	     //遍历
	     Set<Entry<Integer,String>>entry=maps.entrySet();
	     Iterator<Entry<Integer,String>>iter=entry.iterator();
	     while(iter.hasNext())
	     {
	    	 System.out.println(iter.next());
	     }
	     //清除map
	     maps.clear();
	
	}

 

HashMap是线程不安全的,非同步的,当需要重新散列时,数组扩大为原来的两倍,将会把所有数据重新进行插入,此时可能会破换原来的顺序,所有HashMap不能保证映射顺序。HaspMap的重新散列会影响性能。

 

2)Hashtable

       此类实现了哈希表,该哈希表将键映射到相对应的值。任何非null都可以用作键或值,为了成功的在哈希表中存储和获取对象,用作键的对象必须实现hashCode方法和equals方法。

 

用法基本和HashMap相同,不过多介绍

 

HashMap和Hashtable的区别

1.HashMap可以使用null作为键或值,Hashtable不可以

2.HashMap是非同步的,线程不安全,而Hashtable是同步的,线程安全

3.Hashtable的默认容量为11,而HashM的默认容量为16。

 

 

3)TreeMap

      基于红黑树显示的,该映射根据其键的自然排序进行排序,或者根据创建映射时提供的Comparator进行排序。所以,TreeMap使用自定义类作为key时要实现Comparable接口。

 

如:

自定义Person类,实现Comparable接口。使用age属性进行排序

public class Person implements Comparable<Person>{

    public String name;
	
	public  int age;
	
	public Person(String name,int age)
	{
		this.name=name;
		this.age=age;
	}
	

	public int compareTo(Person o) {
		if(o==null)
			throw new NullPointerException();
		if(this.age>o.age)
			return 1;
		if(this.age<o.age)
			return -1;
		return 0;
	}


	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}


	
	
}

 

调用代码:

public static void main(String[] args){

	     Map<Integer, String>maps=new TreeMap<Integer, String>();
	     maps.put(1,"小黑");
	     maps.put(2,"小白");
	     maps.put(10, "老王"); 	    
	     //遍历
	     Set<Entry<Integer,String>>entry=maps.entrySet();
	     Iterator<Entry<Integer,String>>iter=entry.iterator();
	     while(iter.hasNext())
	     {
	    	 System.out.println(iter.next());
	     }
	     //清除map
	     maps.clear();
	     
	     //-----------------------------使用自定义Person做key
	     Map<Person, String>map=new TreeMap<Person, String>();
	     map.put(new Person("xiaobai", 20), "xiaobai");
	     map.put(new Person("xiaohei", 18), "xiaohei");
	     map.put(new Person("xiaohong", 30), "xiaohong");
	
	     //遍历
	     Set<Entry<Person,String>>entry1=map.entrySet();
	     Iterator<Entry<Person,String>>iter1=entry1.iterator();
	     while(iter1.hasNext())
	     {
	    	 System.out.println(iter1.next());
	     }
	     //清除map
	     map.clear();
	}

 

运行结果:




 
 

 

  • 大小: 19.5 KB
  • 大小: 5.6 KB
4
0
分享到:
评论

相关推荐

    JSP应用开发-Java集合类-Map接口.pptx

    JSP应用开发-Java集合类-Map接口.pptx

    Java-Java集合体系-List-Set

    学习收获:通过学习这篇文章,您可以对Java集合体系有完整的了解,对集合三大接口有细致的了解,能够掌握底层实现,开发中能够应用,面试中惊艳面试官。 适合人群:有编程基础和Java基础的小伙伴 适合场景:开发和...

    java集合知识-map、set等

    Set接口中的方法和Collection一致。 |--HashSet: 内部数据结构是哈希表 ,是不同步的。 如何保证该集合的元素唯一性呢? 是通过对象的hashCode和equals方法来完成对象唯一性的。 如果对象的hashCode值不同,...

    java集合-HashMap的使用

    HashMap是一种常用的哈希表实现,用于存储键值对。它实现了Map接口,并且使用键的哈希值来快速定位和访问值。

    java集合-TreeMap的使用

    TreeMap是一种基于红黑树实现的有序映射(SortedMap)。它实现了NavigableMap接口,可以按照键的自然顺序或自定义排序规则对键值对进行排序和访问。

    计算机后端-Java-Java核心基础-第25章 集合02 07. Map接口及其多个实现类的对比.avi

    计算机后端-Java-Java核心基础-第25章 集合02 07. Map接口及其多个实现类的对比.avi

    Java集合框架Map接口.pdf

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

    精通java集合框架--List,Set..

    但是,在“集合框架”中,接口 Map 和 Collection 在层次结构没有任何亲缘关系,它们是截然不同的。这种差别的原因与 Set 和 Map 在 Java 库中使用的方法有关。Map 的典型应用是访问按关键字存储的值。它支持一系列...

    集合框架List、Map、Set接口及其子类综合对比

    Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比

    超全Java集合框架讲解.md

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

    Java基础篇:Java集合.pdf

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

    实验05 Java集合.doc

    4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 ...

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    java 集合部分笔记

    java 集合部分笔记 1 集合的概述 2 Collection接口和Iterator接口(迭代器) 3 List接口 4 Set接口 5 Map接口

    java集合资料整理

    关于java集合资料的整理 集合接口:6个接口,表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类,对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类,对接口的具体实现。 在很大程度上,...

    Java集合总结.txt

    单个集合的学习路线:使用-&gt;做实验-&gt;画图-&gt;分析源码 集合:大小可变的序列,只能存放对象 集合和数组的区别: 1.集合是大小可变的序列,数组在声明后,长度不可变 2.数组只能存放声明时指定的...Map --- Map接口 特

    JAVA集合(List,Set,Map)

     · Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。 · 容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。 Java 2简化...

    js模仿java的Map集合,实现功能

    js模仿java的Map集合,实现功能。size()方法,put()方法,remove()方法等

    java集合类演示源码

    Java平台提供了一个全新的集合框架,框架的核心为Collection、List(列表)、Set(集合)和Map(映射)。集合类的框架为集合的实现者提供了大量的接口和抽象类,并对其中的某些机制给予了描述,例如,Iterator(迭代...

    Java集合框架常见面试题

    Java集合框架常见面试题 剖析⾯试最常⻅问题之 Java 集合框架 包含以下几个模块: 1、集合概述 2、Collection子接口之List 3、Collection子接口之Set 4、Map接口 5、Collection工具类 6、其他重要问题

Global site tag (gtag.js) - Google Analytics