Java类集 _Map 接口的使用注意事项
来源:互联网 发布:礼品券 网络兑换 编辑:程序博客网 时间:2024/06/05 20:58
1、掌握Map 接口的输出操作
2、掌握Map 接口中key 类的定义标准
但是,在操作前必须说明的:Map 接口一般只作为查找使用,输出的操作毕竟属于少数。
import java.util.HashMap ;import java.util.Map ;import java.util.Set ;import java.util.Iterator ;public class IteratorDemo04{public static void main(String args[]){Map<String,String> map = null; // 声明Map对象,其中key和value的类型为Stringmap = new HashMap<String,String>() ;map.put("mldn","www.mldn.cn") ;// 增加内容map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容map.put("mldnjava","www.mldnjava.cn") ;// 增加内容Set<Map.Entry<String,String>> allSet = null ;allSet = map.entrySet() ;Iterator<Map.Entry<String,String>> iter = null ;iter = allSet.iterator() ;while(iter.hasNext()){Map.Entry<String,String> me = iter.next() ;System.out.println(me.getKey() + " --> " + me.getValue()) ;}}};第一种方式,使用Iterator 完成。当然,在JDK1.5 之后也可以使用 foreah 完成。
import java.util.HashMap ;import java.util.Map ;import java.util.Set ;import java.util.Iterator ;public class ForeachDemo02{public static void main(String args[]){Map<String,String> map = null; // 声明Map对象,其中key和value的类型为Stringmap = new HashMap<String,String>() ;map.put("mldn","www.mldn.cn") ;// 增加内容map.put("zhinangtuan","www.zhinangtuan.net.cn") ;// 增加内容map.put("mldnjava","www.mldnjava.cn") ;// 增加内容for(Map.Entry<String,String> me:map.entrySet()){System.out.println(me.getKey() + " --> " + me.getValue()) ;}}};这两种输出形式最终实际上还是以 Collection 的形式输出,只是以Map.Entry作为内容的操作类型。
在Map 中,可以使用任意的类型作为 key 和 value ,那么使用非系统类也可以。
import java.util.Map ;import java.util.HashMap ;class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){return "姓名:" + this.name + ";年龄:" + this.age ;}};public class HashMapDemo05{public static void main(String args[]){Map<String,Person> map = null ;map = new HashMap<String,Person>() ;map.put("zhangsan",new Person("张三",30));// 增加内容System.out.println(map.get("zhangsan")) ;}};如果现在以String 为key 是可以取出内容的。
import java.util.Map ;import java.util.HashMap ;class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){return "姓名:" + this.name + ";年龄:" + this.age ;}};public class HashMapDemo06{public static void main(String args[]){Map<Person,String> map = null ;map = new HashMap<Person,String>() ;map.put(new Person("张三",30),"zhangsan");// 增加内容System.out.println(map.get(new Person("张三",30))) ;}};此时,只是将自定义的类作为 key ,但是在取值的时候发现取不了了,返回的结果是null。那么这为什么之前的String 可以,但是自定义的类不存在呢?
实际上,对于匹配过程来讲呢,有一个特点,即:对象要一样才可以将内容查询出来。
import java.util.Map ;import java.util.HashMap ;class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){return "姓名:" + this.name + ";年龄:" + this.age ;}};public class HashMapDemo07{public static void main(String args[]){Map<Person,String> map = null ;map = new HashMap<Person,String>() ;Person per = new Person("张三",30) ;map.put(per,"zhangsan");// 增加内容System.out.println(map.get(per)) ;}};可是这样并不是解决问题的方法,因为不可能将 Person 的 per 对象带着走啊,应该像 String 一样,可以使用匿名对象的形式找到内容。那么此时,实际上就需要按照与Set 接口中判断重复元素的方式一样,进行方法的覆写。
import java.util.Map ;import java.util.HashMap ;class Person{private String name ;private int age ;public Person(String name,int age){this.name = name ;this.age = age ;}public String toString(){return "姓名:" + this.name + ";年龄:" + this.age ;}public boolean equals(Object obj){if(this==obj){return true ;}if(!(obj instanceof Person)){return false ;}Person p = (Person)obj ;if(this.name.equals(p.name)&&this.age==p.age){return true ;}else{return false ;}}public int hashCode(){return this.name.hashCode() * this.age ;}};public class HashMapDemo08{public static void main(String args[]){Map<Person,String> map = null ;map = new HashMap<Person,String>() ;map.put(new Person("张三",30),"zhangsan");// 增加内容System.out.println(map.get(new Person("张三",30))) ;}};作为 key ,或者更准确的说是作为对象的时候,实际上是依靠 hashCode() 和 equals() 来判断两个匿名对象是否相等,这一点由系统内部自动完成。
总结:
1、Map 可以使用迭代输出
map --> entrySet --> set -->Iterator --> Map.Entry --> key 和 value
2、如果使用非系统作为key,则一定保证覆写 equals 和 hashCode() 方法。否则无效。
- Java类集 _Map 接口的使用注意事项
- 【Java类集】_Map接口使用的注意事项笔记(亲测实例)
- 【Java类集】_Map接口使用的注意事项笔记(亲测实例)
- Java类集 _Map接口
- Java类集 _Map接口
- Java集合源码学习(20)_Map接口的实现HashMap
- Java集合源码学习(23)_Map的子接口ConcurrentMap
- 【Java类集】_Map接口笔记(实例亲测)
- 【Java类集】_Map接口笔记(实例亲测)
- Java集合源码学习(18)_Map接口
- 使用接口的注意事项
- 接口使用的注意事项
- Java集合源码学习(21)_Map接口的子接口SortedMap和NavigableMap
- hdu 1880_map的使用
- 针对java初学者的java接口使用的注意事项
- Java集合源码学习(19)_Map接口的抽象实现AbstractMap
- java.util.List接口的方法subList()的使用注意事项
- java.util.List接口的方法subList()的使用注意事项
- Zend Studio 8 快捷键大集合
- jquery 动态加载js文件以及插件的调用
- VS2010 MSDN文档安装方法
- myeclipse常用快捷键
- 作为项目的直接上级通过问题和风险来帮助项目
- Java类集 _Map 接口的使用注意事项
- 用BeanUtils类自动封装表单数据
- linux下安装oracle//遇到问题找到的
- [新闻] 微软进一步响应 DigiNotar 证书事件
- DATE_FORMAT() 函数
- 基于web的工作流设计器(多比图形控件)
- 人们声称渴望创造力,实际却心存各种偏见
- 使用win7 下snmp的配置过程:
- TCP/IP网络模型