HashMap,Hashtable,TreeMapMap

package com.wzy.list;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class MapTest {
    public static void main(String[] args) {
        Map<String,Object> hashmap = new HashMap<String,Object>();

        hashmap.put("aa", "AAA");
        hashmap.put("bb", 222);
        hashmap.put("null", "kong");
        hashmap.put(null, null);
        hashmap.put("cc", "");
        hashmap.put("", "test");

        System.out.println(hashmap.get(null));//null
        System.out.println(hashmap.get("null"));//kong
        System.out.println(hashmap.get("key"));//key值不存在返回null
        System.out.println(hashmap.get(""));//test
        Set<String> keys = hashmap.keySet();//取得所有的key
        Iterator key = keys.iterator();
        key.forEachRemaining((x)->{System.out.println(x);});
        System.out.println("----------------");
        Set<Entry<String, Object>> values = hashmap.entrySet();
        values.stream().forEach((x)->{System.out.println(x);});//遍例集合对象
        values.stream().forEach((x)->{System.out.println(x.getKey());});//遍例集合对象的key
        values.stream().forEach((x)->{System.out.println(x.getValue());});//遍例集合对象的value
        System.out.println("-------------");
        /**
         * hash(散列)输出是没有顺序的;tree是有序的
         *
         * HashMap,Hashtable,TreeMapMap的子类
         * 三者用法类似
         * 但Hashtable不允许key和value是null
         * Hashtable是线程安全的,因为方法上有synchronized
         *
         * TreeMap允许value为空,但不允许key为空,因为要靠key来排序
         * 像String,Integer这样的类已经覆写了Comparable<String>和hashCode,equals方法
         * 所以可以直接进行排序或者查找操作,
         * 如果是自定义的对象进行排序或者查找,要自己覆写Comparable<String>和hashCode,equals方法
         *
         * 比如key存入一个自定义的对象,查找的话必须得实现hashCode,equals方法
         * 排序的话必须得实现Comparable<String>接口
         * */

        Map<String, Object> hashtable = new Hashtable<String, Object>();
        //table.put(null, null);key和value不可为空

        System.out.println("----treemap----");
        Map<Integer,String> treemap = new TreeMap<Integer,String>();
        //treemap.put(null, "2222");//key不可为空
        treemap.put(2, "2222");
        treemap.put(1, "1111");
        treemap.put(6, "6666");
        treemap.put(4, "4444");
        System.out.println(treemap);//{1=1111, 2=2222, 4=4444, 6=6666}自动排序

    }
}
时间: 2024-11-06 22:05:53

HashMap,Hashtable,TreeMapMap的相关文章

Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

http://www.cnblogs.com/skywang12345/p/3311126.html 概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311126 第1部分 Map概括 (01) Map

[Java集合] 彻底搞懂HashMap,HashTable,ConcurrentHashMap之关联.

注: 今天看到的一篇讲hashMap,hashTable,concurrentHashMap很透彻的一篇文章, 感谢原作者的分享. 原文地址: http://blog.csdn.net/zhangerqing/article/details/8193118 Java集合类是个非常重要的知识点,HashMap.HashTable.ConcurrentHashMap等算是集合类中的重点,可谓"重中之重",首先来看个问题,如面试官问你:HashMap和HashTable有什么区别,一个比较简

HashMap Hashtable区别

http://blog.csdn.net/java2000_net/archive/2008/06/05/2512510.aspx 我们先看2个类的定义 [java] view plain copy public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable [java] view plain copy public class HashMap extends Abstract

Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控制等方法 排序操作: reverse(List):反转 List 中元素的顺序 shuffle(List):对 List 集合元素进行随机排序 sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序 sort(Li

java集合List、Set、Map总结 + HashMap/Hashtable区别

List:(有序,可以重复)通过下标索引 ----ArrayList  可变数组,随机查找 ----LinkedList    链表,任何位置插入删除快 ----Vector    效率比arraylist低,但是可以用于多线程同步 Set:(无序,不可以重复)set最多有一个null元素,因为不可以重复 ----HashSet    没有排序,不重复(顺序随机) ----LinkedHashSet    按插入排序,不重复(按插入顺序) ----TreeSet    实现Comparable接

HashMap Hashtable LinkedHashMap 和TreeMap

java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复. HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的. HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;

基于散列的集合 HashSet\HashMap\HashTable

HashSet\HashMap\HashTable 1 基于散列的集合 2 元素会根据hashcode散列,因此,集合中元素的顺序不一定与插入的顺序一致. 3 根据equals方法与hashCode方法判断元素是否相等.这两个方法是从Object基类中继承的, 查看Object源码,若比较两个引用变量时,equals方法比较的是两个引用是否指向同一个内存地址.同样,hashCode的实现也与引用地址有关. 4 因此,自定义对象加入上述集合时,必须重写equals方法和hashCode方法. 5

HashMap Hashtable ConcurrentHashMap 一点区别

HashMap  ConcurrentHashMap Hashtable 工作中经常会用到, HashMap用的最多, ConcurrentHashMap次之,hashTable用的最少. 简单看了下源码,其实原因还是挺明显的.从JDK的发展历程来看,hashTable是1.0就发布的,属于最早的key-value形式的存储, 到了1.2才有hashMap, ConcurrentHashMap是1.5中发布的,它们的实现有很多类同,也有很多细节上的区别.这里主要通过查看源码来比较下它们在写入与读

HashMap,HashTable,TreeMap区别和用法

开始学HashTable,HashMap和TreeMap的时候比较晕,觉得作用差不多,但是到实际运用的时候又发现有许多差别的.需要大家注意,在实际开发中以需求而定. java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类.Map是将键映射到值的对象,一个映射不能包含重复的键:每个键最多只能映射一个一个值. Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快