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. android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  2. TreeView控件实践

    TreeView控件可以通过HierarchicalDataTemplate 和 DataTemplate来自定义. 1)HierarchicalDataTemplate用来支持HeaderedIte ...

  3. yum配置文件位置

    centos的yum配置文件 cat /etc/yum.conf cachedir=/var/cache/yum //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/ ...

  4. sys.argv用法

    argv是在脚本内部使用,旨在接受命令传参 比如,一个脚本argv.py,代码里面有,sys.argv[1],,sys.argv[2],那么运行这个脚本时,必须在后面跟两个参数,用空格隔开,如:pyt ...

  5. Poj 1125 Stockbroker Grapevine(Floyd算法求结点对的最短路径问题)

    一.Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a ...

  6. Selenium VS Webdriver

    Selenium 是 ThroughtWorks 一个强大的基于浏览器的开源自动化测试工具,它通常用来编写 Web 应用的自动化测试.随着 Selenium 团队发布 Selenium 2(又名 We ...

  7. SQL中top使用方法

    转自:https://www.cnblogs.com/wang7/archive/2012/07/09/2582891.html 1. 在编写程序中,我们可能遇到诸如查询最热门的5篇文章或返回满足条件 ...

  8. URL网址规范化

    网址URL规范化(URL canonicalization)是近一年来在Google搜索结果中出现的一个很大的问题.它指的是搜索引擎挑选最好的URL网址作为真正网址的过程.举例来说,下面这几个URL一 ...

  9. 关于Synchronized关键字锁住对象的嵌套问题

    如果在子关键字代码块中调用了sleep,是否会保留有所的锁?

  10. Spring入门第四课

    注入参数详解:null值和级联属性 可以使用专用的<null/>元素标签为Bean的字符串或其他对象类型的属性注入null值. 和Struts,Hiberante等框架一样,Spring支 ...