1.Map接口

public interface Map<K,V>
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 

2.HashMap、Hashtable、TreeMap

public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable

基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
public class MapDemo {

    /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
hashMap();
}
/**
* 是二叉树数据结构的实现(红黑树--平衡二叉树)
*/
public static void treeMap(){
TreeMap<String,String> map=new TreeMap<String,String>();
map.put("1", "hah"); }
/**
* 线程安全,同步的,效率低,与HashMap相似,初始容量为11,每次扩充2倍+1
*/
public static void hashtable(){
Hashtable<String, String> table=new Hashtable<String,String>(); }
/**
* 使用哈希表(数组+链表)实现,键不能重复,如果相同就会覆盖原来的对象
* 默认创建一个长度为16的数组,加载因子为0.75(当数组满75%的容量后,表示需要重新扩充,又叫哈希表重新散列)
* 哈希表保存对象时,会根据key对象的hashcode值对HashMap的容量求余,决定该对象要存在数组的哪个位置,
* 如果该位置有对象那么这些对象以链表的结构存储
* 线程不安全,效率高
* 每次扩充2倍
*/
public static void hashMap(){
Map<String,String> map=new HashMap<String,String>();
map.put("1","小明");
System.out.println("1".hashCode()%16);
map.put("2","小花");
System.out.println("2".hashCode()%16);
map.put("3","小刚");
System.out.println("3".hashCode()%16);
System.out.println("----------");
System.out.println(map.size());
//取值
System.out.println(map.get("1"));
System.out.println(map.get("2")); System.out.println(map.containsKey(1)); } }

 3.Map集合的输出

在Collection接口中,可以使用iterator()方法为Iterator接口实例化,并且进行输出操作,但是在Map接口中并没有此方法的定义,所以Map接口本身是不能直接使用iterator进行输出的。

hashcode深入分析:两个hashcode值不同,则两个对象一定不同;两个对象不同,hashcode值可能相同;程序员要做的是任何情况下输出同一个对象的hashcode值都应该相同

public class MapIterator {

    /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
iterator();
stack();
queue();
}
public static void iterator(){
HashMap<String,Student> map=new HashMap<String,Student>();
map.put("jack", new Student("jack",2));
map.put("tom", new Student("tom",3));
map.put("honey", new Student("honey",4)); //遍历
Set<String> keys=map.keySet();
Iterator<String> i=keys.iterator();
while(i.hasNext()){
String key=i.next();
Student s=map.get(key);
System.out.println(key+"-->"+s);
}
}
/**
* 堆栈
*/
public static void stack(){
Stack<String> s=new Stack<String>();
s.push("xiaoming");//压栈,入栈
s.push("xiaohua"); String str=s.pop();//出栈
System.out.println(str);
}
/**
* 队列
*/
public static void queue(){
Queue<String> q=new LinkedList<String>();
q.add("xiaogang");
q.add("xiaobin"); //移除队列的头
String str=q.poll();
System.out.println(str);
}
}

4.对象一对多关系可以使用HashSet实现

public class Person {
private String name;
private Set<Book> books=new HashSet<Book>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Book> getBooks() {
return books;
}
public void setBooks(Set<Book> books) {
this.books = books;
} }
public class Book {
private String name;
private Person person;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}

Java集合——集合框架Map接口的更多相关文章

  1. Java集合框架Map接口

    集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...

  2. Java中的集合(十三) 实现Map接口的Hashtable

    Java中的集合(十三) 实现Map接口的Hashtable 一.Hashtable简介 和HashMap一样,Hashtable采用“拉链法”实现一个哈希表,它存储的内容是键值对(key-value ...

  3. Java中的集合(十一) 实现Map接口的TreeMap

    Java中的集合(十一) 实现Map接口的TreeMap 一.TreeMap简介(基于JDK1.8) TreeMap是基于红黑树数据结构,是一个key-value的有序集合,该映射根据其键的自然顺序进 ...

  4. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  5. JAVA集合框架 - Map接口

    Map 接口大致说明(jdk11): 整体介绍: 一个将键映射到值的(key-value)对象, 键值(key)不能重复, 每个键值只能影射一个对象(一一对应). 这个接口取代了Dictionary类 ...

  6. Java集合中的Map接口怎么使用?

    Map(双列集合框架) 1.Map接口及实现类概述 Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 coll ...

  7. Java集合中的Map接口

    jdk1.8.0_144 Map是Java三种集合中的一种位于java.util包中,Map作为一个接口存在定义了这种数据结构的一些基础操作,它的最终实现类有很多:HashMap.TreeMap.So ...

  8. Java类集框架——List接口

    学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别.    Collection ...

  9. Java的集合类之 map 接口用法

    Map接口不是Collection接口的继承.而是从自己的用于维护键-值关联的接口层次结构入手.按定义,该接口描述了从不重复的键到值的映射. 我们可以把这个接口方法分成三组操作:改变.查询和提供可选视 ...

随机推荐

  1. ubantu在登录界面一致循环的问题

    1.进入非图形化界面:在登录界面同时按下ctrl+alt+f1(有的需要同时按下ctrl+alt+f1+fn) 2.:输入你的账户名回车     *注意;这里是帐户名,而不是密码 3.:输入你的密码回 ...

  2. 杂项:Code(开源资源)

    ylbtech-杂项:Code(开源资源) 1.返回顶部 1.CSDN http://code.csdn.net/ 2.腾讯·开源 http://code.tencent.com/ 3. 4. 5. ...

  3. Go语言是如何处理栈的

    转自:http://tonybai.com/2014/11/05/how-stacks-are-handled-in-go/ Go 1.4Beta1刚刚发布,在Go 1.4Beta1中,Go语言的st ...

  4. leetcode笔记-1 twosum

    # -*- coding: utf-8 -*- #!/bin/env python # Python2.7 nums = [2, 4, 7, 0, 12, 6] print sorted(range( ...

  5. sql 基础总结

  6. Angular面试题

    1. ng-show/ng-hide 与 ng-if的区别? 我们都知道ng-show/ng-hide实际上是通过display来进行隐藏和显示的.而ng-if实际上控制dom节点的增删除来实现的.因 ...

  7. js中object、字符串与正则表达式的方法

    对象 1.object.hasOwnProperty(name) 检测object是否包含一个名为name的属性,那么hasOwnProperty方法返回true,但是不包括其原型上的属性. 正则表达 ...

  8. hibernate.PropertyAccessException: Null value was assigned to a property of primitive type

    日志: [WARN-2016/07/26/18/:45/:52]ProcessEngineServiceImpl.(257) - 审批流程log日志--submitProcess方法:提交人userI ...

  9. mongodb创建.bat快捷方式

    1.在mongodb安装目录下找到bin文件下的mongod.exe 复制路径,然后创建startmongodb.bat文件 例如 cd C:\Program Files\MongoDB\Server ...

  10. python的语法糖

    # -*- coding: utf-8 -*-def deco(func): print("before myfunc() called.") func() print(" ...