Map集合基础
来源:互联网 发布:软件测试课程大纲 编辑:程序博客网 时间:2024/06/16 16:44
map接口存储的是键与值之间的映射关系,简单理解就是一存就会存一组(Key与Value两个对象)。比如学号与姓名: Map<0002,张三>
键是具有唯一性的,如果集合中已经存在0002学号,那么再次存入一个0002键,它的值会被存入并且覆盖掉旧值,该集合中的0002键始终只会指向一个值,不会指向多个。不过多个键的值相同是有可能的。
map中的方法相对还是较少的,增删改查等等基本方法。
3.1 增,改: put(K key, V value) (K,V为泛型,任何对象均可添加)
3.2 删: remove(Object key) 根据Key删除一条映射关系,clear( ) 删除所有
3.3 查:containsKey(Object key),containsValue(Object value) 判断集合中是否含有该键或者值,返回为booleanMap接口有两个常用实现类,TreeMap和HashMap,顾名思义,一个为存储方式为二叉树,另一个为哈希表 。
取出map集合中的元素,有两种方法,entrySet( ) 和 keySet( ),用代码解释。enrtySet( )较为复杂点,返回的是一个Map.Entry关系类,它包含了map集合中的映射关系,提供了getKey( )和getValue( )方法,可以很方便的获取到键和值。
import java.util.*;class HashMapDemo2 { public static void main(String[] args) { Map<Student,String> map = new HashMap<Student,String>(); map.put(new Student("zhangsan",18),"Hangzhou"); map.put(new Student("lisi",20),"Wuhan"); map.put(new Student("lisi",22),"Beijing"); map.put(new Student("wangwu",25),"Nanjing"); map.put(new Student("zhaoliu",30),"Shanghai"); map.put(new Student("zhaoliu",30),"Shanghai"); // 1. Map集合的keySet()方法,返回为Set,存储了Map中的所有键,此处为Student Set<Student> set = map.keySet(); Iterator<Student> i2 = set.iterator(); while (i2.hasNext()) { Student stu = i2.next(); String addr = map.get(stu); System.out.println(stu + "..." + addr); } // 2. Map集合的entrySet()方法,返回也是Set // 但是存储的是一个特殊的泛型Map.Entry<K,V> // 这是Map中的一个内部类,用来描述Map中键,值之间映射关系. Set<Map.Entry<Student, String>> m = map.entrySet(); Iterator<Map.Entry<Student,String>> i = m.iterator(); while (i.hasNext()) { Map.Entry<Student, String> me = i.next(); System.out.println(me.getKey().getName() + " " + me.getKey().getAge() + " " + me.getValue()); } }}class Student implements Comparable<Student>{ private String name; private int age; Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public int hashCode() { return name.hashCode() + age * 19; } public boolean equals(Object obj) { if (!(obj instanceof Student)) { return false; } else { Student s = (Student) obj; return this.name.equals(s.name) && this.age == s.age; } } public int compareTo (Student s) { int num = this.age - s.age; if (num == 0) { return this.name.compareTo(s.name); } return num; } public String toString() { return name + "---" + age; }}
阅读全文
0 0
- Java基础 集合Map
- java基础-Map集合
- map 集合基础
- Java基础集合Map
- Java基础---集合 map
- Map集合基础
- JavaSE基础Map集合
- Java基础16-集合Map
- Java基础16:map集合;
- 黑马程序员--Map集合基础
- 集合框架-MAP(java基础)
- Java基础<十三>------Map集合
- java基础集合之Map
- 集合基础 :List;Set;Map
- Java基础 list map 集合
- java基础-- 集合框架 之 Map集合
- Java基础--集合框架(Map集合)
- Java集合List,Set,Map基础
- android studio 常用配置
- 九天学会Java,第三天,选择结构
- LinkedHashMap
- 比较各JAX-RS实现
- sudo: no valid sudoers sources found, quitting
- Map集合基础
- 数据读写分离
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- HDU 6184 && 2017广西邀请赛:Counting Stars(三元环)
- Unity 二维数组的转置
- Java数据类型
- 初入firefox的大门(学习webidl的趣谈)
- 新手之hibernate配置(hibernate.cfg.xml)
- UGUI 进度条拉伸解决