List<HomeEntity> test = homeDao.test(); //测试 List<HomeEntity> test1 = modelRuleDao.test(); List<HomeEntity> test2 = new ArrayList<>(); for (HomeEntity homeEntity : test) { String tablename = homeEntity.getTABLENAME(); String columnname = homeEntity.getCOLUMNNAME(); for (HomeEntity entity : test1) { String name = entity.getTABLENAME(); String column = entity.getCOLUMNNAME(); if (tablename.equals(name)) { if (columnname.equals(column)) { String columntype = homeEntity.getCOLUMNTYPE(); String columntype1 = entity.getCOLUMNTYPE(); if (columntype.equals(columntype1)) { test2.add(entity); } } } } }优化代码
时间: 2024-02-10 17:26:26 浏览: 150
C#_List 的序列化.doc
你可以优化上述代码,减少循环嵌套和提高效率。以下是一种可能的优化方法:
```java
List<HomeEntity> test = homeDao.test();
List<HomeEntity> test1 = modelRuleDao.test();
List<HomeEntity> test2 = new ArrayList<>();
Map<String, HomeEntity> entityMap = new HashMap<>();
for (HomeEntity entity : test1) {
String name = entity.getTABLENAME() + "_" + entity.getCOLUMNNAME();
entityMap.put(name, entity);
}
for (HomeEntity homeEntity : test) {
String tablename = homeEntity.getTABLENAME();
String columnname = homeEntity.getCOLUMNNAME();
String key = tablename + "_" + columnname;
HomeEntity entity = entityMap.get(key);
if (entity != null && homeEntity.getCOLUMNTYPE().equals(entity.getCOLUMNTYPE())) {
test2.add(entity);
}
}
```
这种优化方法使用了一个 `Map` 对象来存储 `test1` 中的实体对象,键是由表名和列名组合而成的字符串。这样,在第二个循环中,只需通过键查找对应的实体对象,而不需要再次进行嵌套循环。
注意,为了确保键的唯一性,我在组合键时添加了下划线("_")来分隔表名和列名。如果你的数据中不会出现下划线,也可以使用其他分隔符或者自定义规则来组合键。
通过这种优化,可以减少循环次数并提高代码的执行效率。
阅读全文