map和list的size
时间: 2023-06-05 12:04:44 浏览: 192
属性有什么区别?
map和list都是常用的数据结构,但是它们的size属性有所不同。对于一个list来说,size属性表示该list中元素的个数。而对于一个map来说,size属性表示该map中键值对的个数。因为map是基于键值对存储数据的,每个键对应一个值,所以map的size属性和其键值对的个数是一致的。
相关问题
val grouped_list:Iterator[List[Int]]=list.grouped(4) val list1:List[List[Int]]=grouped_list.toList println("grouped_list:") println(list1) val list_to_map:List[Int]=list1.map(_.size) println(list_to_map)
这段代码的作用是将一个整数列表按照每组4个的大小进行分组,然后将分组后的列表转换为一个列表的列表。接着,代码将这个列表的列表中每个子列表的大小提取出来,并放入一个新的列表中。最后,输出这个列表的列表和提取出来的大小列表。
具体来说,这段代码的执行过程如下:
1. 将整数列表按照每组4个的大小进行分组,得到一个迭代器对象`grouped_list`。
2. 将迭代器对象`grouped_list`转换为一个列表的列表`list1`,其中每个子列表表示一个分组。
3. 输出分组后的列表的列表`list1`。
4. 将分组后的列表的列表`list1`中每个子列表的大小提取出来,并放入一个新的列表`list_to_map`中。
5. 输出提取出来的大小列表`list_to_map`。
需要注意的是,这段代码没有进行任何过滤或排序操作,仅仅是将列表按照一定规则进行分组,并提取出每个分组的大小。
优化这段代码:private List<DynamicSource> getDynamicSourceList(List<DasymesQltyMpCertfInfoItemMod> itemModList) { List<Map<String, String>> mapList = new ArrayList<>(); if (itemModList == null || itemModList.size() == 0) { Map<String, String> map = new HashMap<>(); map.put("no", null); map.put("name", null); map.put("portion", null); mapList.add(map); return DynamicSource.createList("detail", mapList); } for (int i = 1; i <= itemModList.size(); i++) { DasymesQltyMpCertfInfoItemMod item = itemModList.get(i - 1); Map<String, String> map = new HashMap<>(); map.put("no", i + ""); map.put("name", item.getItemName()); map.put("portion", item.getPortion()); mapList.add(map); } return DynamicSource.createList("detail", mapList); }
可以使用Java 8的Stream API来重写这段代码,代码如下:
```
private List<DynamicSource> getDynamicSourceList(List<DasymesQltyMpCertfInfoItemMod> itemModList) {
List<Map<String, String>> mapList = Optional.ofNullable(itemModList)
.orElseGet(Collections::emptyList)
.stream()
.map(item -> {
Map<String, String> map = new HashMap<>();
map.put("no", String.valueOf(itemModList.indexOf(item) + 1));
map.put("name", item.getItemName());
map.put("portion", item.getPortion());
return map;
})
.collect(Collectors.toList());
if (mapList.isEmpty()) {
Map<String, String> map = new HashMap<>();
map.put("no", null);
map.put("name", null);
map.put("portion", null);
mapList.add(map);
}
return DynamicSource.createList("detail", mapList);
}
```
这里使用了Optional来避免对空List进行null检查,使用Stream API来处理List数据并返回一个新的List。同时将代码中的循环和判断合并到了一起,使代码更加简洁易读。
阅读全文