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. (5)Redis几个认识误区

    前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Serv ...

  2. iis 500 解决方法

    1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录. 3 输入aspnet_regiis.exe ...

  3. MVC2.0==>MVC3.0

    总结出如下4个MVC3.0和2.0的重要区别. 1. @ 符号在 View 页面中的用法: C#代码以 @符号开头,例如 1 <h2>Name: @Model.Name</h2> ...

  4. git版本控制器

    Git 是一个开源的分布式版本控制系统 Google用于android 源代码的管理就是Git,  它支持离线工作, 本地提交可以稍后提交到服务器上. 众多的开源项目都使用 Git  作为版本控制系统 ...

  5. .Net文件上传--小数据--un

    文件上传控件:FileUpload - 控件,界面+方法+属性Button/LinkButton/ImageButton FileUpload控件:1.SaveAs("要上传到服务器的绝对路 ...

  6. 熟悉 Objective-C

    ## 1. OC 的起源 OC 的方法(本质上讲是消息)在运行时决定.使用函数调用的语言,由编译器决定.如果涉及多态,则用到虚函数表. ## 2. 少在头文件中引用其他文件 1. 两个头文件互相引用会 ...

  7. jQuery模拟鼠标点击事件失效的问题

    最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件. 使用trigger('click ...

  8. git push 403

    1. 在github上新建一个空项目. 2. git clone 到本地仓库. 3. git add [一些文件]. 4. git commit -m "first commit" ...

  9. [SAP ABAP开发技术总结]将文件存储到数据库表中,并可发送邮件

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. nyoj325 zb的生日(DFS)

    zb的生日 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...