Map 和Map.Entry的学习
来源:互联网 发布:java实现短信发送代码 编辑:程序博客网 时间:2024/06/13 06:25
在看项目的时候,看到这样的代码:
List<Instance> instances = new ArrayList<Instance>();
instances =impl.selectInstacne();
Map<Integer,Instance> map = new HashMap<Integer,Instacne>();
List<Integer> itemids = new ArrayList<Integer>();
if(instances.size()>0){
for(Instacne instance:instances){
int itemID = instance.getItemId();
map.put(itemID, instance);
itemids.add(itemID);
}
Map<Integer,Integer> items = OtherImpl.getItemValueById(itemids);
for(Map.Entry<Integer,Integer> entry:items.entrySet()){
int item = entry.getKey();
int val = entry.getValue();
map.get(item).setStatus(val);
}
Impl.updateAllInstance(instances);
}
代码中使用了Map和Map.Entry的例子,觉得写的很简洁,效率也很高。(map 中的遍历使用hashCode(),散列码,而不是索引,这样访问速度极快)
此代码功能:实现更新所有实例的status属性。
1、通过遍历instance,初始化map,使每个itemID对应一个instance对象,并将itemID存放在一个list中
2、重新获得item结合中每个item的值,存在一个Map 中(items)
3、遍历items,找到items中每个条目的键(item)和值(value),再将原来map中键(item)对应的值(value)进行重新设置。
以前没有见过这种写法,学习到了,用map修改值,避免了使用for循环(双重循环进行比较),大大提高了程序效率。
知识点:
Map:接口,键值对,若value为封装的基本类型对象,则不能改变值(或通过Map.Entry来改变值),若为类类型,则可以通过找到值,在调用值(value)的set方法,改变值;
Map.Entry :接口,是Map的嵌套类,A map entry (key-value pair). 单个键到值的映射,可以改变map中value的值(setValue())
可通过 Set<>map.EntrySet()获得Map.Entry()的实例。
Map.Entry接口
Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。
通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。
用Iterator 迭代器进行遍历
Itetrator it=map.entrySet().iterator();
while(it.haseNext()){
Map.Entry<Integer,Integer> entry=(Map.Entry<Integer,Integer>)it.next();
entry.getKey();
entry.getValue();
}
- Map 和Map.Entry的学习
- map和map.entry
- Map.Entry和Map.entrySet的用法
- java的Map和Map.Entry
- map.entry和map.keytry的区别
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- 另一种遍历Map的方式 Map.Entry 和 Map.entrySet()
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- Map.Entry和map.entrySet()---更好的遍历Map
- Map.Entry 和 Map.entrySet()
- 【Map】Map.Entry的使用
- Map.Entry的好处
- map.entry的介绍
- map.entry 的作用
- Map、Map.Entry和增强for循环的详解
- Map.Entry和Map中的map.keySet()、map.entrySet()详解
- 关于Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:]
- Android Studio增量更新(非软件自带方法)
- iOS 9 适配系列教程
- Appium junit之自定义多次执行部分case的次数以及顺序,仅运行rePublish()即可
- 开发人员使用Angular JS的五大理由
- Map 和Map.Entry的学习
- centos7使用docker1.8.2
- 常用vim设置
- datagridview隔行变色
- iOS开发-常用第三方开源框架介绍
- C#学习笔记(三)
- jQuery中bind,live,delegate与one方法的用法及区别
- Linux通用命令
- 如何学习用VBScript操作Excel