Map接口下的实现类:

HashMap

1.存储原理:

  向HashMap中添加元素时,首先会调用hashCode(),算的哈希值,然后

  算出该元素在哈希表中的存储位置。

情况1

情况2(java  集合(Map2)写过了)

2.有必要时要重写 hashCode(), equals()

import java.util.*;

public class ex12 {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put(new Person(110, "Tom"), 001);
map.put(new Person(220, "Jack"), 002);
map.put(new Person(330, "TNT"), 003);
map.put(new Person(110, "Bat"), 004);// 如果出现了相同的键,那么后添加的会取代原来的,可以观察运行结果 Tom 没有被输出
System.out.println(map); }
} class Person{
int id;
String name; public Person(int id, String name) {
this.id = id;
this.name = name;
} @Override
public String toString() {
return "[ id = " + this.id + ", name = " + this.name + " ]";
} @Override
public int hashCode() {
return this.id = id;
} @Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.id == p.id;
}
}
{[ id = 330, name = TNT ]=3, [ id = 220, name = Jack ]=2, [ id = 110, name = Tom ]=4}

Process finished with exit code 0

TreeMap(注意下面代码中的泛型使用)

存储原理:基于红黑树的(二叉数)对键进行自然排序。

注意事项:1)向TreeMap添加元素时,如果元素的键具有自然顺序时,会按照自然顺序排序。

2)-----------------------,-----------------不具有自然顺序,要实现Compareable接口。

     3)-----------------------,--------------------------------,没有实现-----------------,必须在创建TreeMap时,传入比较器。

import java.util.*;

public class ex12 {
public static void main(String[] args) {
TreeMap<Emp, Integer> map1 = new TreeMap<Emp, Integer>();
map1.put(new Emp("Tom", 200), 100);
map1.put(new Emp("Tom", 20), 200);
map1.put(new Emp("Tom", 190), 300);
map1.put(new Emp("Tom", 200), 400);
System.out.println(map1); }
} class Emp implements Comparable<Emp>{
String name;
int salary; public Emp(String name, int salary) {
this.name = name;
this.salary = salary;
} @Override
public int compareTo(Emp o) {
return this.salary - o.salary;
} @Override
public String toString() {
return "[ name = " + this.name + ", salary = " + this.salary + " ]";
}
}
{[ name = Tom, salary = 20 ]=200, [ name = Tom, salary = 190 ]=300, [ name = Tom, salary = 200 ]=400}

Process finished with exit code 0

java 集合(Map3)的更多相关文章

  1. 032.[转] Java集合框架

    Java集合框架和各实现类性能测试 pphh发布于2017年11月17日 Java语言集合框架提供一系列集合接口类 (collection interface)和实现类,满足对集合中元素对象的各种集合 ...

  2. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

  3. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  4. java集合你了解多少?

    用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...

  5. 深入java集合学习1-集合框架浅析

    前言 集合是一种数据结构,在编程中是非常重要的.好的程序就是好的数据结构+好的算法.java中为我们实现了曾经在大学学过的数据结构与算法中提到的一些数据结构.如顺序表,链表,栈和堆等.Java 集合框 ...

  6. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  7. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  8. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

  9. Java 集合框架

    Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...

随机推荐

  1. C++导出文件后缀dll,lib,exp,def

    简要的介绍一下在微软开发工具中(VC)静态链接库和动态链接库生成过程中出现的.dll  .lib  .def 和 .exp文件类型.windows平台上可执行文件可能是一个.exe文件也可能四个.dl ...

  2. 详细介绍java中的数据结构

    详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...

  3. RS485模块(485与TTL信号的转换)

    1 综述 MAX3483, MAX3485, MAX3486, MAX3488, MAX3490以及MAX3491是用于RS-485与RS-422通信的3.3V,低功耗收发器,每个器件中都具有一个驱动 ...

  4. Python3基础 for循环 遍历并输出一个字符串的列表

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. c#启动EXE文件(简单的)

    在程序执行中会遇到启动本软件的exe问,或者启用其它的exe文件,已达到执行某些操作的作用.下面是两种最常见的启动exe文件. 1.调用系统dll使用其提供的方法. 引用的dll, [DllImpor ...

  6. LuaTinker的bug和缺陷

    LuaTinker的bug和缺陷 LuaTinker是一套还不错的C++代码和Lua代码的绑定库,作者是韩国人Kwon-il Lee,作者应该是参考了LuaBind后,为了简化和避免过重而实现的.其官 ...

  7. RTP学习笔记

    一.定义 实时传输协议(Real- time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多  ...

  8. VBA中方法的函数式调用和过程式调用的差别

    因见到有人求助批量设置工作簿中的超链接,尝试写了一段代码: Sub AddHyperlinks() Dim strName As String, source As String, target As ...

  9. 06_在web项目中集成Spring

    在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...

  10. Shared Assembilies and Strongly Named Assemblies

    the .NET Framework has in place to deal with versioning problems. Two Kinds of Assemblies, Two Kinds ...