• Map接口

Map为一个接口。实现Map接口的类都有一个特点:有键值对,将键映射到值的对象。 Map不能包含重复的键,每个键可以映射到最多一个值。

Map常见的接口方法有:

V  put(K key, V value)   将指定的值与该映射中的指定键相关联(注意,返回值是指被覆盖的value值)

V  remove(Object key)    如果存在(从可选的操作),从该地图中删除一个键的映射

boolean    containsKey(Object key)    如果此映射包含指定键的映射,则返回 true

boolean    containsValue(Object value)    如果此地图将一个或多个键映射到指定的值,则返回 true

Collection<V>    values()    返回此地图中包含的值的Collection视图。

int    size()    返回此地图中键值映射的数量

V    get(Object key)    返回到指定键所映射的值,或 null如果此映射包含该键的映射

Set<K>    keySet()    返回此地图中包含的键的Set视图

Set<Map.Entry<K,V>>    entrySet()     返回此地图中包含的映射的Set视图

示例1:(遍历Map集合,思路:先获取到键的集合,遍历集合,get方法取出值)

public class Test11 {
// Map集合没有生成Iterator的方法,所以要用以下方法遍历
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<String> set = hm.keySet();
/*方式1:
Iterator<String> it = set.iterator();
while (it.hasNext()){
String s = it.next();
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}*/ // 方式2:
for (String s : set) {
Integer i = hm.get(s);
System.out.println(s + "=" + i);
}
}
}

示例2:(遍历Map集合,思路:把键值对作为一个对象存进集合,遍历集合,取出对象的属性)

public class Test12 {
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("张三",13);
hm.put("李四",14);
hm.put("王五",15);
Set<Map.Entry<String,Integer>> set = hm.entrySet(); /*方式1:
Iterator<Map.Entry<String,Integer>> it = set.iterator();
while (it.hasNext()){
Map.Entry<String,Integer> entry = it.next();
System.out.println(entry.getKey() + "=" + entry.getValue());*/ // 方式2:
for (Map.Entry<String,Integer> entry: set) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
  • HashMap类

上面的接口方法基本都是HashMap实现的。所以用起来基本一样,不多说。同样的,LinkedHashMap类继承HashMap类,用法基本一样,只是LinkedHashMap底层用了链表实现而已。

  • TreeMap类

可以看做能排序的HashMap。原理其实和TreeSet一样......

关于排序可以参考TreeSet类:https://www.cnblogs.com/chichung/p/10252495.html

  • Hashtable类

Hashtable与HashSet的关系和ArrayList与Vector的关系几乎一样。

  • 共同点:

底层都是哈希算法,都是双列集合

  • 区别:

1.HashMap是线程不安全的,效率高,JDK1.2版本出现的

Hashtable是线程安全的,效率低,JDK1.0版本出现的

2.HashMap可以存储null键和null值

Hashtable不可以存储null键和null值

java中的Map集合的更多相关文章

  1. Java中遍历Map集合的四种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  2. Java中的map集合顺序如何与添加顺序一样

    一般使用map用的最多的就是hashmap,但是hashmap里面的元素是不按添加顺序的,那么除了使用hashmap外,还有什么map接口的实现类可以用呢? 这里有2个,treeMap和linkedH ...

  3. 在java中获取Map集合中的key和value值

  4. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  5. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

  6. Java Collection、Map集合总结

    1.Java中的Collection集合总结 Collection |---List(存储有序,可重复) |---ArrayList 底层数据结构是数组,查询快,增删慢. 线程不安全.效率高 |--- ...

  7. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  8. JAVA中关于Map的九大问题

    通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...

  9. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

随机推荐

  1. 122. Best Time to Buy and Sell Stock II (Array)

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  2. BZOJ1090:[SCOI2003]字符串折叠——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1090 Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S=S 2 ...

  3. BUG:Open quote is expected for attribute "{1}" associated with an element type "id".

    BUG原因:Mybatis的xml文件中id缺少双引号: 正确的应该是:

  4. MongoDB插入数据的3种方法

    insert()方法: 下面是在inventory集合中插入一个三个字段的文档: db.inventory.insert( { _id: 10, type: "misc", ite ...

  5. 阐述ArrayList、Vector、LinkedList的存储性能和特性?

    ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内 ...

  6. C++虚基类的初始化

    #include<iostream> using namespace std; class Base{ public: Base(int sa) { a=sa; cout<<& ...

  7. POJ 3107 树形dp

    Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6812   Accepted: 2390 Descrip ...

  8. 阿里云oss命令详解

    SYNOPSIS 上传,下载或拷贝Objects SYNTAX ossutil cp file_url cloud_url [-r] [-f] [-u] [--output-dir=odir] [-- ...

  9. centos6.5下安装svn并且实现多项目管理配置方案

    #安装SVN服务器 yum install subversion #在home下创建svn根目录 mkdir /home/svn #在 /home/svn下创建pro1 , pro2, pro3 三个 ...

  10. JavaScript字符串逆序

    如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var reverse = function( str ){ var stack ...