Map<String, Object> mapList = new HashMap<>();用java7
时间: 2023-11-11 13:29:06 浏览: 81
您可以使用Java7的迭代器(Iterator)来遍历mapList元素,示例代码如下:
```
Iterator<Map.Entry<String, Object>> iterator = mapList.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
```
这段代码将会遍历mapList中的每一个键值对,并输出键和值。使用迭代器的好处是可以在遍历过程中删除元素,但是需要注意的是,如果在遍历过程中修改了mapList的结构(例如添加或删除元素),则会抛出ConcurrentModificationException异常。
相关问题
优化这段代码:List<CompletableFuture<Map<String, Object>>> futureList = new ArrayList<>(); for (PersonBasicVo person : personList) { CompletableFuture<Map<String, Object>> future = CompletableFuture.supplyAsync(() -> { String personNo = person.getPersonNo(); List<ContactsBasic> contactsList = contactsService.list(Wrappers.lambdaQuery(ContactsBasic.class) .eq(ContactsBasic::getPersonNo, personNo) .ne(ContactsBasic::getRelationshipAccount, "") .isNotNull(ContactsBasic::getPersonNo) .like(StrUtil.isNotBlank(phone), ContactsBasic::getRelationshipAccount, phone)); if (CollUtil.isNotEmpty(contactsList)) { Map<String, Object> contactsMap = new HashMap<>(); contactsMap.put("personNo", personNo); contactsMap.put("contactsList", contactsList); return contactsMap; } else { return null; } }, executor); futureList.add(future); } List<Map<String, Object>> contactsMapList = futureList.stream() .map(CompletableFuture::join) .filter(Objects::nonNull) .collect(Collectors.toList());
优化后的代码如下:
```java
List<CompletableFuture<Map<String, Object>>> futureList = personList.stream()
.map(person -> CompletableFuture.supplyAsync(() -> {
String personNo = person.getPersonNo();
List<ContactsBasic> contactsList = contactsService.list(Wrappers.lambdaQuery(ContactsBasic.class)
.eq(ContactsBasic::getPersonNo, personNo)
.ne(ContactsBasic::getRelationshipAccount, "")
.isNotNull(ContactsBasic::getPersonNo)
.like(StrUtil.isNotBlank(phone), ContactsBasic::getRelationshipAccount, phone));
if (CollUtil.isNotEmpty(contactsList)) {
Map<String, Object> contactsMap = new HashMap<>();
contactsMap.put("personNo", personNo);
contactsMap.put("contactsList", contactsList);
return contactsMap;
} else {
return null;
}
}, executor))
.collect(Collectors.toList());
List<Map<String, Object>> contactsMapList = futureList.stream()
.map(CompletableFuture::join)
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
主要优化:
1. 使用流式编程,替换原来的for循环。
2. 使用`stream()`和`collect(Collectors.toList())`方法来收集结果,代替手动添加到列表中。
3. 将lambda表达式内联,使代码更简洁。
List<Map<String, Object>> whereQuery = new ArrayList<>(); Map<String, Object> map = new HashMap<>(); map.put("column", "owner_code"); map.put("operator", "="); map.put("value", logisticsAccount.getExt1()); Map<String, Object> map1 = new HashMap<>(); map1.put("column", "base_code"); map1.put("operator", "="); map1.put("value", "101"); Map<String, Object> map2 = new HashMap<>(); map2.put("column", "shipment_date"); map2.put("operator", "="); map2.put("value", "20200725"); Map<String, Object> map3 = new HashMap<>(); map3.put("column", "actual_sent_flag"); map3.put("operator", "="); map3.put("value", 2); whereQuery.add(map); whereQuery.add(map1); whereQuery.add(map2); whereQuery.add(map3); request.put("where_query", whereQuery);怎么去优化
这段代码主要是对查询条件进行封装,其中包含多个 Map 对象。优化可以从以下几个方面考虑:
1. 对于相同类型的查询条件,可以将其封装成一个对象,避免重复代码。例如,可以创建一个 QueryCondition 类,包含 column、operator、value 三个属性,并提供相应的 getter 和 setter 方法。
2. 为了提高代码的可读性和可维护性,可以将查询条件的封装操作单独提取出来,封装成一个方法,将 whereQuery 的构造过程放到该方法中。这样可以减少代码的重复性,提高代码的可复用性。
3. 如果查询条件中的值是变量,而不是固定的常量,可以将其封装成一个对象,并提供相应的 getter 和 setter 方法。这样可以方便地修改查询条件,提高代码的灵活性。
4. 如果查询条件比较复杂,可以考虑使用框架提供的查询语句构建器,例如 Hibernate Criteria API 或 MyBatis 的动态 SQL。这样可以避免手动拼接 SQL 语句,提高代码的可读性和可维护性。
阅读全文