代码正在比较2个list
代码。第一个list
来自api调用,第二个来自数据库。我正在使用2个循环遍历列表并进行比较,并添加公共代码到新列表。第一个列表包含大约800个数据,第二个列表(来自db)包含150个数据。是否有任何方法可以改善此代码的性能。不允许在AllowedCodes Class
中进行任何更改。使用嵌套循环是否会影响给定数据量下的性能?
public class AllowedCodes {
private String codeValue="";
public String getCodeValue() {
return codeValue;
}
public void setCodeValue(String codeValue) {
this.codeValue = codeValue;
}
}
public class CheckCodes {
public static void main(String[] args) {
List<AllowedCodes> old_codes_list=getListOfOldCodes();
List<AllowedCodes> new_codes_list=new ArrayList<>();
String sql = "This query gets the codes from database";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet result = statement.executeQuery();
while(result.next()) {
for(AllowedCodes a:old_codes){
if(a.getCodeValue().equalsIgnoreCase(result.getCodeValue())){
new_codes_list.add(a);
}
}
}
}
}
答案 0 :(得分:1)
将列表复制到HashMap
中,将AllowedCodes
分组,小写时将它们具有相同的代码值:
Map<String, List<AllowedCodes>> map =
old_codes.stream().collect(groupingBy(a -> a.getCodeValue().toLowerCase()));
然后,在您的while循环中:
while(result.next()) {
String resultCodeValue = result.getCodeValue().toLowerCase();
for (AllowedCodes a : map.getOrDefault(resultCodeValue, Collections.emptyList())) {
new_codes_list.add(a);
}
}