用list来模拟map中的put和get方法
来源:互联网 发布:广电网络新增频道 编辑:程序博客网 时间:2024/06/05 16:04
import java.util.*;class MapTest {public static void main(String[] args) {Tools ts=new Tools();ts.put(1,"zhangsan");ts.put(2,"lisi");System.out.println(ts.get(1));System.out.println(ts.get(2));}}class Tools{ArrayList al1=new ArrayList();ArrayList al2=new ArrayList();public void put(Object obj1,Object obj2){al1.add(obj1);al2.add(obj2);}public Object get(Object key){return al2.get(al1.indexOf(key));}}
打印结果:
zhangsan
lisi
表面上看这样是没有问题的,但是我们看到put函数有一句话写的很清楚:在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。
下面的代码可以说明这个问题
class MapTest {public static void main(String[] args) {HashMap hm=new HashMap();hm.put(1,"num1");hm.put(2,"num2");hm.put(1,"num3");hm.put(4,"num3");//第二种遍历方法Set<Map.Entry<Integer,String>> set=hm.entrySet() ;for (Map.Entry<Integer,String> me:set ){System.out.println(me.getKey()+"---"+me.getValue());}}}打印结果为:
1---num3
2---num2
4---num3
打印结果告诉我们有相同键的添加,后面一个会覆盖前面一个。而我们自定义的put函数显然不具备这个特点。
看下面代码
import java.util.*;class MapTest {public static void main(String[] args) {Tools ts=new Tools();ts.put(1,"zhangsan");ts.put(2,"lisi");ts.put(1,"zhangsan");for (int i=0;i<ts.size();i++ ){System.out.println(ts.get(i));}}}class Tools{ArrayList al1=new ArrayList();ArrayList al2=new ArrayList();public void put(Object obj1,Object obj2){al1.add(obj1);al2.add(obj2);}public Object get(int index){return al2.get(index);}public int size(){return al1.size();}}打印结果为:
zhangsan
lisi
zhangsan
显然ArrayList将两个相同的键和值存了进去。
改进方法为:在Tools中进行判断
代码为:
class Tools{ArrayList al1=new ArrayList();ArrayList al2=new ArrayList();public void put(Object obj1,Object obj2){if (al1.contains(obj1)&&al2.contains(obj2))return ;al1.add(obj1);al2.add(obj2);}public Object get(int index){return al2.get(index);}public int size(){return al1.size();}}
这样的话打印结果为:
zhangsan
lisi
0 1
- 用list来模拟map中的put和get方法
- 礼拜五log~js 自定义map实现方法put和get
- JAVAScript js 模拟JAVA map类 实现put get 等JAVA map类方法
- JAVAScript js 模拟JAVA map类 实现put get 等JAVA map类方法
- Restful中的get, put 和post
- HashMap的put和get方法原理
- hashMap底层put和get方法逻辑
- HashMap.put/get方法
- java map .put 方法
- springmvc实现REST中的GET、POST、PUT和DELETE
- springmvc实现REST中的GET、POST、PUT和DELETE
- 从源码层理解Hashtable中的put和get
- http中get,post,put和delect方法
- Java HashMap的数据结构以及put和get方法
- Java 的容器类 List 和 Map 中的 toString( ) 方法
- 用数据结构的视角来分析list set和map
- list.get(i)-List和list.get(i).get("key")->Map结构 获取值的区别
- curl模拟delete/put/post/get请求
- wamp改网站默认根目录,使用域名重定向,多站点配置
- poj1201(二分+线段树)或(差分约束系统)
- 第四章的思维导图
- 个人工湖
- CFile详解
- 用list来模拟map中的put和get方法
- 程序猿之---致敬屌丝
- 项目中使用log4j记日志
- 这实在是一篇少走许多学习弯路的好文章
- 前端学习网站
- CocoaPods安装和使用教程
- CentOS yum 源的配置与使用
- NoSQL架构实践(一)——以NoSQL为辅
- oracle优化sql