JAVA问题总结之24--HashMap键值对(key-value)的操作
来源:互联网 发布:入骨相思君知不知 编辑:程序博客网 时间:2024/05/21 17:54
JAVA问题总结之24–HashMap键值对(key-value)的操作
package com.atguigu.java;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Collection;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.Properties;import java.util.Set;import java.util.TreeMap;import org.junit.Test;/* * Collection接口 * * Map接口 * |-----HashMap:Map的主要实现类 * |-----LinkedHashMap:使用链表维护添加进Map中的顺序。故遍历Map时,是按添加的顺序遍历的。 * |-----TreeMap:按照添加进Map中的元素的key的指定属性进行排序。要求:key必须是同一个类的对象! * 针对key:自然排序 vs 定制排序 * |-----Hashtable:古老的实现类,线程安全,不建议使用。 * |----Properties:常用来处理属性文件。键和值都为String类型的 */public class TestMap { //使用Properties处理属性文件 @Test public void test6() throws FileNotFoundException, IOException{ Properties pros = new Properties(); pros.load(new FileInputStream(new File("jdbc.properties"))); String user = pros.getProperty("user"); System.out.println(user); String password = pros.getProperty("password"); System.out.println(password); } // 定制排序 @Test public void test5() { Comparator com = new Comparator() { public int compare(Object o1, Object o2) { if (o1 instanceof Customer && o2 instanceof Customer) { Customer c1 = (Customer) o1; Customer c2 = (Customer) o2; int i = c1.getId().compareTo(c2.getId()); if (i == 0) { return c1.getName().compareTo(c2.getName()); } return i; } return 0; } }; TreeMap map = new TreeMap(com); map.put(new Customer("AA", 1001), 87); map.put(new Customer("CC", 1001), 67); map.put(new Customer("MM", 1004), 77); map.put(new Customer("GG", 1002), 97); Set set1 = map.keySet(); for (Object obj : set1) { System.out.println(obj + "----->" + map.get(obj)); } } // 自然排序 @Test public void test4() { Map map = new TreeMap(); map.put(new Person("AA", 23), 89); map.put(new Person("MM", 22), 79); map.put(new Person("GG", 23), 99); map.put(new Person("JJ", 13), 69); Set set1 = map.keySet(); for (Object obj : set1) { System.out.println(obj + "----->" + map.get(obj)); } } @Test public void test3() { Map map = new LinkedHashMap(); map.put("AA", 213); map.put("BB", 45); map.put(123, "CC"); map.put(null, null); map.put(new Person("DD", 23), 89); Set set1 = map.keySet(); for (Object obj : set1) { System.out.println(obj + "----->" + map.get(obj)); } } /* * 如何遍历Map Set keySet() Collection values() Set entrySet() */ @Test public void test2() { Map map = new HashMap(); map.put("AA", 213); map.put("BB", 45); map.put(123, "CC"); map.put(null, null); map.put(new Person("DD", 23), 89); // 1.遍历key集。 Set set = map.keySet(); for (Object obj : set) { System.out.println(obj); } // 2.遍历value集 Collection values = map.values(); Iterator i = values.iterator(); while (i.hasNext()) { System.out.println(i.next()); } // 3.如何遍历key-value对。 // 方式一: Set set1 = map.keySet(); for (Object obj : set1) { System.out.println(obj + "----->" + map.get(obj)); } // 方式二: Set set2 = map.entrySet(); for (Object obj : set2) { Map.Entry entry = (Map.Entry) obj; // System.out.println(entry.getKey() + "---->" + entry.getValue()); System.out.println(entry); } } /* * Object put(Object key,Object value):向Map中添加一个元素 Object remove(Object * key):按照指定的key删除此key-value void putAll(Map t) void clear():清空 Object * get(Object key):获取指定key的value值。若无此key,则返回null boolean containsKey(Object * key) boolean containsValue(Object value) int size():返回集合的长度 boolean * isEmpty() boolean equals(Object obj) * * HashMap: 1.key是用Set来存放的,不可重复。value是用Collection来存放的,可重复 * 一个key-value对,是一个Entry。所有的Entry是用Set存放的,也是不可重复的。 * 2.向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同。若相同 则只能添加进后添加的那个元素。 */ @Test public void test1() { Map map = new HashMap(); map.put("AA", 213); map.put("BB", 456); map.put("BB", 45); map.put(123, "CC"); map.put(null, null); map.put(new Person("DD", 23), 89); map.put(new Person("DD", 23), 87); System.out.println(map.size()); System.out.println(map); map.remove("BB"); System.out.println(map); Object value = map.get(1234); System.out.println(value); }}
结果:
5
{null=null, AA=213, Person [name=DD, age=23]=87, BB=45, 123=CC}
{null=null, AA=213, Person [name=DD, age=23]=87, 123=CC}
null
null
AA
Person [name=DD, age=23]
BB
123
null
213
89
45
CC
null—–>null
AA—–>213
Person [name=DD, age=23]—–>89
BB—–>45
123—–>CC
null=null
AA=213
Person [name=DD, age=23]=89
BB=45
123=CC
AA—–>213
BB—–>45
123—–>CC
null—–>null
Person [name=DD, age=23]—–>89
Person [name=JJ, age=13]—–>69
Person [name=MM, age=22]—–>79
Person [name=AA, age=23]—–>89
Person [name=GG, age=23]—–>99
Customer [name=AA, id=1001]—–>87
Customer [name=CC, id=1001]—–>67
Customer [name=GG, id=1002]—–>97
Customer [name=MM, id=1004]—–>77
root
123abc
0 0
- JAVA问题总结之24--HashMap键值对(key-value)的操作
- HashMap数据引用时,增加key-value键值对
- HashMap对value(不是Key)的排序方法(转载)
- 浅谈js的键值对key和value
- java.util.HashMap中的key为对象的问题,对象key获得相应的value值
- Android开发,建立具有键值对(key-value)关系的spinner
- C语言提取(key,value)键值对
- java对HashMap中的key或者value值进行排序!
- java对HashMap中的key或者value值进行排序!
- java对HashMap中的key或者value值进行排序
- 如何能通过hashmap的value来返回其对应的键值key
- HashMap对其中value的排序问题
- 基于Key-Value对的排序(Java版)
- 对Java的HashMap根据Value排序
- Erlang静态键值对(key-value)数据分别写入erl文件与ETS表读取的测试
- HashMap的遍历效率讨论经常遇到对HashMap中的key和value值对的遍历操作,有如下两种方法:
- 键值编码(KVC)KEY VALUE CODING
- Key-Value Observing (键值监测)
- Xcode7下面用Unity3D的一些尴尬问题
- 程序员的十层楼
- exit()和_exit()区别
- codeforces 148D D. Bag of mice(概率dp)
- hihoCoder 1233 Boxes(2015 北京网赛 G)
- JAVA问题总结之24--HashMap键值对(key-value)的操作
- CentOs中Apache开启rewrite模块详解
- 深度学习Matlab工具箱代码注释——MnistTest.m
- DOTNET笔记_StringBuilder_List<T>_Array
- Android内存泄露
- 让fragmentTabhost这类固定的bar能够滑动起来
- Centos启动FTP及常见问题
- Dockerfile命令介绍
- C++输入不定长度的字符串