Java 集合Map --16
来源:互联网 发布:js 禁止div滚动条事件 编辑:程序博客网 时间:2024/05/16 11:53
Map集合
该集合存储键值对。
一对一对往里存,而且要保证键的唯一性
1.添加元素
2.删除
clear()
3.判断
containsKey(Object key)
containsValue(Object value)
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
Map集合:
|–Hashtable
底层是哈希表数据结构,不可以存入null值和null健。该集合是线程同步的,jdk1.0出现的,效率低
|–HashMap
底层是哈希表数据结构,允许使用null值和null健。该集合是不同步的,jdk1.2出现的,效率高
|–TreeMap
底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序
和Set很像,Set底层就是使用了Map集合
import java.util.*;class MapDemo{ public static void main(String[] args) { Map<Integer,String> map = new HashMap<Integer,String>(); //添加元素 //put方法新的值会替换老的值 map.put(01,"zhangsan1"); map.put(02,"zhangsan2"); map.put(03,"zhangsan3"); sop("containsKey:"+map.containsKey(02)); sop("containsValue:"+map.containsValue("zhangsan3")); //sop("remove:"+map.remove(02)); //获取 sop("get:"+map.get(02)); sop(map); //获取map集合中所有的值 Collection<String> coll = map.values(); sop(coll); //HashMap可以使用null值和null健 map.put(null,"haha"); sop("get:"+map.get(null)); } public static void sop(Object obj) { System.out.println(obj); }}
map集合的两种取出方式
1,Set keySet
将map中所有的键存入到Set集合,因为set具备迭代器。
所以可以迭代方式取出所有的键。再根据get方法,获取每一个键对应的值
Map集合的取出原理:将map集合转成set集合,再通过迭代器取出
import java.util.*;class MapDemo22{ public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); //添加元素 map.put("02","zhangsan1"); map.put("03","zhangsan2"); map.put("04","zhangsan3"); map.put("01","zhangsan4"); //先获取map集合 所有键的Set集合,keySet(); Set<String> keySet = map.keySet(); //有了Set集合,就可以获取其迭代器 Iterator<String> it = keySet.iterator(); while(it.hasNext()) { String key = it.next(); //有了键可以通过map集合的get方法获取其对应的值 String value = map.get(key); System.out.println("key:"+key+",value:"+value); } } }
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口
interface Map{ public static interface Entry { public abstract Object getKey(); public abstract Object getValue(); }}class HashMap implements Map.Entry{ class Hash implements Map.Entry { public Object getKey(){} public Object getValue(){} }}
import java.util.*;class MapDemo2{ public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); //添加元素 map.put("02","zhangsan1"); map.put("03","zhangsan2"); map.put("04","zhangsan3"); map.put("01","zhangsan4"); //将Map集合中的映射关系取出。存入到Set集合中。 Set<Map.Entry<String,String>> entrySet = map.entrySet(); Iterator<Map.Entry<String,String>> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry<String,String> me = it.next();//获取关系 String key = me.getKey();//获取键 String value = me.getValue();//获取值 System.out.println(key+":"+value); } }}
练习
每一个学生都有对应的归属地
学生属性:姓名,年龄
注意:姓名年龄相同视为同一个学生
保证学生的唯一性
1,描述学生
2,定义map容器,将学生作为健,地址作为值,存入
3,获取map集合中的元素
import java.util.*;class Student implements Comparable<Student>{ private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Student s) { int num = new Integer(this.age).compareTo(new Integer(s.age)); if(num==0) return this.name.compareTo(s.name); return num; } public int hashCode() { return name.hashCode()+age*34; } public boolean equals(Object obj) { if(!(obj instanceof Student)) throw new ClassCastException("类型不匹配"); Student s = (Student)obj; return this.name.equals(s.name) && this.age==s.age; } public String getName() { return name; } public int getAge() { return age; } public String toString() { return name+".."+age; }}class MapTest{ public static void main(String[] args) { HashMap<Student,String> hm = new HashMap<Student,String>(); hm.put(new Student("lisi03",22),"beijing"); hm.put(new Student("lisi03",23),"beijing"); hm.put(new Student("lisi02",21),"chongqing"); hm.put(new Student("lisi02",21),"wuhan"); hm.put(new Student("lisi00",25),"jilin"); hm.put(new Student("lisi",20),"shanghai"); //第一种取出方式 keySet Set<Student> keySet = hm.keySet(); Iterator<Student> it = keySet.iterator(); while(it.hasNext()) { Student stu = it.next(); String addr = hm.get(stu); System.out.println(stu+".."+addr); } //第二种取出方式 entrySet Set<Map.Entry<Student,String>> entrySet = hm.entrySet(); Iterator<Map.Entry<Student,String>> iter = entrySet.iterator(); while(iter.hasNext()) { Map.Entry<Student,String> me = iter.next(); Student stu = me.getKey(); String addr = me.getValue(); System.out.println(stu+"....."+addr); } }}
可以排序的Map集合。TreeMap
import java.util.*;class StuNameComparator implements Comparator<Student>{ public int compare (Student s1,Student s2) { int num = s1.getName().compareTo(s2.getName()); if(num==0) return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); return num; }}class MapTest2{ public static void main(String[] args) { TreeMap<Student,String> tm = new TreeMap<Student,String>(new StuNameComparator()); tm.put(new Student("lisi6",23),"nanjing"); tm.put(new Student("alisi1",22),"beijing"); tm.put(new Student("lisi4",21),"shanghai"); tm.put(new Student("blisi3",24),"wuhan"); tm.put(new Student("lisi2",25),"tianjin"); Set<Map.Entry<Student,String>> entrySet = tm.entrySet(); Iterator<Map.Entry<Student,String>> it = entrySet.iterator(); while(it.hasNext()) { Map.Entry<Student,String> me = it.next(); Student stu = me.getKey(); String addr = me.getValue(); System.out.println(stu+":::"+addr); } }}
0 0
- Java 集合Map --16
- Java基础16-集合Map
- Java基础16:map集合;
- java-16(3)-Map集合
- JAVA集合-Map集合
- java集合------Map集合
- Java集合----Map集合
- java集合------Map集合总结
- Java集合之-Map集合
- Java集合—Map集合
- java集合----------Map
- java笔记 Map集合
- java------集合Map
- java遍历Map集合
- java Map集合练习
- java集合(Map)
- java 遍历map集合
- java之Map集合
- epoll和select和poll比较
- mysql创建和删除索引
- 升级到win10之后怎么不能上网了 升级Win10无法上网的解决办法
- eclipse & as 项目编码修改
- 个人的尚学堂数据库oracle笔记(1)
- Java 集合Map --16
- 活学活用wxPython -> 给你的wxPython程序一个稳固的基础
- 黑马程序员——ios基础---C语言:字符串、指针
- HDU 5399 Too Simple
- 从错误中学python(4)——最小公约数与辗转相除法
- 实现矩阵类
- 字符串中连续出现最多的子串 & 字符串中最长重复子串
- Nginx监控脚本
- IOS学习之Foundation框架—集合