关闭

Java集合类框架—Map

185人阅读 评论(0) 收藏 举报
分类:

概述

如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。

  • HashMap :底层也是基于哈希表实现 的。
  • TreeMap
  • Hashtable

Map接口的方法:

添加
put(K key, V value)
putAll(Map《? extends K,? extends V》 m)

删除
remove(Object key)
clear()

获取
get(Object key)
size()

判断
containsKey(Object key)
containsValue(Object value)
isEmpty()

迭代
keySet()
values()
entrySet()

Map迭代

keySet()
values()
entrySet()

方式一:

public static void main(String[] args) {
        Map<String,String> map = new HashMap<String, String>();
        //添加方法
        map.put("汪峰", "章子怡");
        map.put("文章", "马伊琍");
        map.put("谢霆锋","张柏芝");
        map.put("成龙", "林凤娇");

        //keySet() 把Map集合中的所有键都保存到一个Set类型 的集合对象中返回。
        Set<String> keys = map.keySet();  
        Iterator<String> it = keys.iterator();
        while(it.hasNext()){
            String key = it.next();
            System.out.println("键:"+ key+" 值:"+ map.get(key));
        }
}

方式二:

public static void main(String[] args) {
        Map<String,String> map = new HashMap<String, String>();
        //添加方法
        map.put("汪峰", "章子怡");
        map.put("文章", "马伊琍");
        map.put("谢霆锋","张柏芝");
        map.put("成龙", "林凤娇");

        //values() 把所有的值存储到一个Collection集合中返回。
        Collection<String>  c = map.values(); 
        Iterator<String> it = c.iterator();
        while(it.hasNext()){
            System.out.println("值:"+ it.next());
        }
}

方式三

public static void main(String[] args) {
        Map<String,String> map = new HashMap<String, String>();
        //添加方法
        map.put("汪峰", "章子怡");
        map.put("文章", "马伊琍");
        map.put("谢霆锋","张柏芝");
        map.put("成龙", "林凤娇");

        //map集合的遍历方式三: entrySet方法遍历。
        Set<Map.Entry<String,String>>  entrys = map.entrySet(); 
        Iterator<Map.Entry<String,String>> it = entrys.iterator();
        while(it.hasNext()){
            Map.Entry<String,String> entry = it.next();
            System.out.println("键:"+ entry.getKey()+" 值:"+ entry.getValue());
        }

}

HashSet

HashMap的存储原理:
往HashMap添加元素的时候,首先会调用键的hashCode方法得到元素 的哈希码值,然后经过运算就可以算出该元素在哈希表中的存储位置。

情况1: 如果算出的位置目前没有任何元素存储,那么该元素可以直接添加到哈希表中。

情况2:如果算出 的位置目前已经存在其他的元素,那么还会调用该元素的equals方法与这个位置上的元素进行比较,如果equals方法返回 的是false,那么该元素允许被存储,如果equals方法返回的是true,那么该元素被视为重复元素,不允存储。

TreeMap

TreeMap也是基于红黑树(二叉树)数据结构实现 的, 特点:会对元素的键进行排序存储。

TreeMap 要注意的事项:

  1. 往TreeMap添加元素的时候,如果元素的键具备自然顺序,那么就会按照键的自然顺序特性进行排序存储。
  2. 往TreeMap添加元素的时候,如果元素的键不具备自然顺序特性, 那么键所属的类必须要实现Comparable接口,把键的比较规则定义在CompareTo方法上。
  3. 往TreeMap添加元素的时候,如果元素的键不具备自然顺序特性,而且键所属的类也没有实现Comparable接口,那么就必须在创建TreeMap对象的时候传入比较器。
0
0
查看评论

Java集合体系总结—Map、Set、List、Queue

首先上来一张自己画的图,主要根据《疯狂Java讲义》一书中的两个图整合而来。主要讲解重要的集合及其特点。 0x01 Collection 接口 Collection接口比较宽泛,该集合就是单一对象的集合(对比Map容器,是key-value这样的一对元素构成的键值对的集合)。一般作为工具使用,比...
  • csp277
  • csp277
  • 2015-06-11 22:09
  • 1216

Java集合类: Set、List、Map、Queue使用场景梳理

感谢有奉献精神的人 转自:http://shuidexiongdi.iteye.com/blog/2068869 本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景   相关学习资料 http://files.cnblogs.com/LittleHan...
  • zhangliao613
  • zhangliao613
  • 2015-08-12 23:49
  • 4876

java集合类(Map)

一、什么是Map Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一 个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就...
  • LD0807
  • LD0807
  • 2017-01-05 15:35
  • 1210

JAVA中集合框架的知识点总结

题外话   记得原来在学校的时候,大二选修了JAVA这门课,老师只教到多态继承就闪人了,不去评论他是否敬业。后期自己不断摸索,对JAVA的掌握还好能在简历上写下“熟悉”二字。本以为,不会再去写这样基础的博客了,但是想想后面要走的路还有很长很长,不能在摸索的过程中忘记来时的路,必须有深刻的...
  • qq_32971807
  • qq_32971807
  • 2016-10-26 09:40
  • 1020

java集合类Map

Map的实现类有Hashtable、HashMap、TreeMap 1)HashTable //下面是应用java散列表的一个例子 import java.util.*; class Counter{ int i; public String toString(){ return Int...
  • wintersense
  • wintersense
  • 2014-12-01 21:16
  • 253

java集合类框架

原文出处:于卫国,http://yuweiguocn.github.io/java-collection/Java集合类框架概览及各集合之间的区别。 集合中存放的是对象的引用。 Collections:集合的搜索、排序、线程安全化等Collection接口 boolean add(Object ...
  • axi295309066
  • axi295309066
  • 2017-01-05 10:13
  • 292

JAVA集合类框架

1 问题提出        通常,程序总是根据运行时才知道的某些条件去创建新对象。在此之前,不会知道所需对象的数量,甚至不知道确切的类型。如何解决这个问题呢?即如何在任意时刻和任意位置创建任意数量的对象? Java类库提供了一套完整的容器类/集合类来解决这个问...
  • zhongyangzhong
  • zhongyangzhong
  • 2013-08-24 20:30
  • 1774

Java集合类框架

Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。 Collection |-  List |_ ArrayList |_ LinkedList ...
  • EricFantastic
  • EricFantastic
  • 2015-11-12 11:18
  • 750

java集合框架代码演示demo

这里的代码演示可以结合前面写的关于集合的文章;原本是想分别对应把代码放到相应的地方的,恩,由于我有点懒,就直接放在这儿了。 Student类:package zyf.com;import java.util.HashSet; import java.util.Set;public class St...
  • Yienfong_Chueng
  • Yienfong_Chueng
  • 2016-07-14 21:21
  • 1392

Java集合类之Map

这两天看了一下关于Map及子类的东西,做一下小结。  Map  Map集合里存储的是具有映射关系的键值对,什么是映射关系,就跟数学当中的函数映射差不多,一个x值对应一个y值。Map中也一样,里面的“键”就相当于x值,“值”相当于y值。键值是不能重复的,每个键最多映射一个值。Map...
  • hsk256
  • hsk256
  • 2015-03-24 11:05
  • 463
    个人资料
    • 访问:49778次
    • 积分:1375
    • 等级:
    • 排名:千里之外
    • 原创:93篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类