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. 2016年12月10日 星期六 --出埃及记 Exodus 21:5

    2016年12月10日 星期六 --出埃及记 Exodus 21:5 "But if the servant declares, `I love my master and my wife ...

  2. MVC 直接把数据库的数据输出到view(太神奇了)

    @model IEnumerable<MvcApplication32.Models.UserInfo> 后台是集合类型了 ,传到前台是model了,用 IEnumerable<&g ...

  3. spring事务之——spring配置事务的五种方式

    Spring配置文件中关于事务配置总是由三个部分组成,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSo ...

  4. centos7 安装 mariadb 的正确命令

    使用的是linode的centos7系统,安装mysql发现已经默认的是mariadb. 但是不管是使用linode官网说明还是百度搜索到的的根本安装方法无法安装成功. 总是提示这一句: ERROR  ...

  5. 【leetcode❤python】21. Merge Two Sorted Lists

    #-*- coding: UTF-8 -*- # Definition for singly-linked list.# class ListNode(object):#     def __init ...

  6. iOS开发,推送消息 steps

    概述:推送过程简介 一.App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远程推送的申请. ...

  7. 【原文】前端程序员必须知道的高性能Javascript知识

    原文:前端程序员必须知道的高性能Javascript知识 想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影. 本文会分享一些高效的JavaScript的最佳 ...

  8. HIP-HOP 漫画家 Skottie Young

     http://blog.sina.com.cn/s/blog_67e59b160100v9ib.html           以上是部分预览图! 下载地址: 29  MB=   127  张 yy语 ...

  9. 使用Spring容器

    Spring的两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口. Spring容器就是一个大的Bea ...

  10. hibernate缓存说明

    hibernate缓存说明: 1.一级缓存(session级别缓存)     一级缓存,不是用来提升性能,是用来处理事务的 2.二级缓存(sessionFactory级别缓存):     二级缓存,对 ...