java之map接口

一。collection与map集合的区别

1.collection集合中的元素为孤立存在,map集合中的预算为成对存在(key键--vlaue值)

2.collection集合为单列集合,map集合为双列集合

3.collection集合中有重复的元素,也可以没有重复的元素,map集合中key值不能重复,但值可以重复

4.Map中常用的集合为HashMap集合(存储无顺序)、LinkedHashMap集合(存储有顺序)

5.键值遵循hashSet,不能重复,无序存储。linkedMap,有顺序。

二。如果存储的键为自定义数据类型,必须重写键的hashCode()方法、equals()方法。

person对象

 1 package com.oracle.demo01;
 2
 3 public class Person {
 4  private String name;
 5  private Integer age;
 6 public String getName() {
 7     return name;
 8 }
 9 public void setName(String name) {
10     this.name = name;
11 }
12 public Integer getAge() {
13     return age;
14 }
15 public void setAge(Integer age) {
16     this.age = age;
17 }
18 public Person(String name, Integer age) {
19     super();
20     this.name = name;
21     this.age = age;
22 }
23 public Person() {
24     super();
25 }
26 @Override
27 public String toString() {
28     return "Person [name=" + name + ", age=" + age + "]";
29 }
30  @Override
31 public int hashCode() {
32     final int prime = 31;
33     int result = 1;
34     result = prime * result + ((age == null) ? 0 : age.hashCode());
35     result = prime * result + ((name == null) ? 0 : name.hashCode());
36     return result;
37 }
38  @Override
39 public boolean equals(Object obj) {
40     if (this == obj)
41         return true;
42     if (obj == null)
43         return false;
44     if (getClass() != obj.getClass())
45         return false;
46     Person other = (Person) obj;
47     if (age == null) {
48         if (other.age != null)
49             return false;
50     } else if (!age.equals(other.age))
51         return false;
52     if (name == null) {
53         if (other.name != null)
54             return false;
55     } else if (!name.equals(other.name))
56         return false;
57     return true;
58 }
59 }
 1 package com.oracle.demo01;
 2
 3 import java.util.HashMap;
 4 import java.util.Set;
 5
 6 //自定义类型Map集合中的键值
 7 public class Demo04 {
 8 public static void main(String[] args) {
 9     HashMap<Person,String>  map=new HashMap<Person,String>();
10     //自定义类使用对象的形式存储数值
11     map.put(new Person("一",18),"yi");
12     map.put(new Person("二",18),"er");
13     map.put(new Person("三",18),"san");
14     map.put(new Person("一",18),"wu");
15     //遍历
16     Set<Person> set=map.keySet();
17     for(Person p:set){
18         System.out.println(p+"---"+map.get(p));
19     }
20     //重写hashcode(),equals()   source___  hashcode()and equals()
21 }
22 }

三。put  remove  get方法的使用

 1 package com.oracle.demo01;
 2
 3 import java.util.HashMap;
 4 import java.util.HashSet;
 5
 6 public class Demo01 {
 7     public static void main(String[] args) {
 8         HashMap<String, String> map = new HashMap<String, String>();
 9         // put存储键值对
10         map.put("yi", "123");
11         map.put("er", "456");
12         map.put("yi", "456");
13         map.put("san", "789");
14         //删除
15         System.out.println(map.remove("yi"));
16         // 取值 获得Value值    同一个key值,value值覆盖前面的内容,若无这个key值,返回null
17         System.out.println(map.get("yi"));
18     }
19 }

四。map集合中通过键查询value值的四种方法

keyset+迭代器或增强for

 1 package com.oracle.demo01;
 2
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Set;
 6
 7 public class Demo02 {
 8     public static void main(String[] args) {
 9         HashMap<String, String> map = new HashMap<String, String>();
10         // put存储键值对,返回Value值
11         map.put("yi", "123");
12         map.put("er", "456");
13         map.put("yi", "456");
14         map.put("san", "789");
15         // keyset+增强for ,得到key值
16         // 导set包,
17         /*
18          * Set<String> ss=map.keySet(); //遍历 for(String s:ss){//获得S对应的key值
19          * System.out.println(map.get(s));//传入s值,得到value值 }
20          */
21         // keySet+迭代器
22         // 获得set集合,单列集合
23         Set<String> s1 = map.keySet();
24         // 创建迭代器
25         Iterator<String> s2 = s1.iterator();
26         // 遍历
27         while (s2.hasNext()) {
28             // 此时为两次next()
29             // System.out.println(ssss.next()+","+map.get(ssss.next()));
30             // 程序中最好出现一次next().
31             String a = s2.next();
32             System.out.println("键值key为" + a + ",value值为" + map.get(a));
33         }
34
35     }
36
37 }

enteyset+迭代器或增强for循环()

1.首先获得键值对对象map.entry<E,E>   2.再使用getkey/getvalue

 1 package com.oracle.demo01;
 2
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Map;
 6 import java.util.Set;
 7
 8 public class Demo03 {
 9     public static void main(String[] args) {
10         //内部类的调用,内部类名.外部类名.方法/属性或创建对象
11         //Entry把集合中的键值对封装称为对象(整体)Entry<E,E>,
12         //然后通过getKey和GetValue,获得键值和value值
13         HashMap<String, String> map = new HashMap<String, String>();
14         // put存储键值对,返回Value值
15         map.put("yi", "123");
16         map.put("er", "456");
17         map.put("yi", "456");
18         map.put("san", "789");
19         //entry+增强for
20         //获得Map.Entry<String,String>对象的Set集合
21         //泛型可以为数据类型、对象、集合
22         Set<Map.Entry<String,String>> set=map.entrySet();
23         /*for(Map.Entry<String,String> s:set){//获得set集合中的每一个对象
24             String s1=s.getKey();
25             String s2=s.getValue();
26             System.out.println(s1+"---"+s2);
27         }*/
28         //获取迭代器
29         Iterator<Map.Entry<String,String>> i=set.iterator();
30     while(i.hasNext()){
31         //得到每一个Entry对象
32         Map.Entry<String,String>  entry=i.next();
33         String s1=entry.getKey();
34         String s2=entry.getValue();
35         System.out.println(entry);//默认调用Entry中的tostring()方法
36         System.out.println(s1+"/"+s2);
37     }
38     }
39 }

原文地址:https://www.cnblogs.com/mlf19920916/p/12147263.html

时间: 2024-10-04 20:48:43

java之map接口的相关文章

Java集合Map接口与Map.Entry学习

Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) 添加.删除操作: Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像.如果该关键字已经存在,那么与此关键字相关的新值将取代旧值.方法返回关键字的旧值,如果关键字原先并不存在,则返回null Object remove(Object

Java Core - Map接口

Map:The java.util.Map interface represents a mapping between a key and a value. The Map interface is not a subtype(子类型) of the Collectioninterface.Therefore it behaves a bit different from the rest of the collection types.java.util.Map接口表示键和值之间的映射. M

Java中map接口 遍历map

java集合框架用于存储数据,也被称为集合类 位于java.util包下 java.util包下常用接口和类 Collection和Map是Java集合框架的根接口 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问. Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因). Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value. Map接口 Map

Java容器Map接口

Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHashMap,WeakHashMap,Hashtable,IdentityHashMap和TreeMap.需要注意的是,Map接口并没有继承Collection接口! 1.HashMap HashMap 继承于AbstractMap,实现了Cloneable.java.io.Serializable接口

9.4-全栈Java笔记:Map接口和实现类

现实生活中,我们经常需要成对存储某些信息.比如,我们使用的微信,一个手机号只能对应一个微信账户.这就是一种成对存储的关系. Map就是用来存储"键(key)-值(value) 对".  Map类中存储的"键值对"通过键来标识,所以"键对象"不能重复. Map 接口的实现类有: HashMap.TreeMap.HashTable.Properties等. 常用的方法: 方法 说明 Object   put(Object key, Object va

9.5-全栈Java笔记:Map接口中的实现类HashMap

上节聊到「Map接口和实现类」,今天我们深入探讨其实现类中的HashMap如何进行底层实现. Hashmap基本结构讲解 哈希表的基本结构就是"数组+链表".我们打开HashMap源码,发现有如下两个核心内容: public class   HashMap<K,V> extends   AbstractMap<K,V> implements   Map<K,V>, Cloneable, Serializable { /** * The default

Java中Map接口的遍历

package Test4; import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; import org.junit.Test; public class MapBianLi { /* * 如何遍历Map * Set keySet()-->遍历Key * Collection values()-->遍历va

Java集合——Map接口

1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 put(key,value):添加元素 get(Object key):获取指定key的元素 keySet():返回指定对象key的集合 values():返回指定对象value的集合 remove(Object key):移除指定key的元素,并且返回对应值的引用 entrySet():返回映射中包含映射关系的视图 3.常用实现类 Hash

Java中Map接口和其常用子类

一.Map接口常用方法 public V put(K key,V value):向集合中保存数据: public V get(Object key):根据key查找对应的value数据: public Set<K> keySet():取出全部的key,返回一个set集合: public Set<Map.Entry<K,V>> entrySet():将Map集合转化为set集合: 二.常用子类 1.public class HashMap<K,V> exten