这种方法是检查重复变量。最近我发现了一种新语法:for-loop(String s: List) like this.我试图将该新指令应用于我当前的代码,但它会导致错误Type mismatch: cannot convert from element type String to Integer我想重构我的代码(请告诉我)为什么 for syntax ( for (Integer i : duplicateList) // for (Integer k :checkList) ) 有错误?有什么方法可以应用这种新语法吗?或任何其他建议?这是我的原始代码:public List<String> checkDuplicateInArray(List<String> checkList) { Set<String> unique = new HashSet<>(); Set<String> duplicate = new HashSet<>(); for (String val : checkList) { (unique.contains(val) ? duplicate : unique).add(val); } List<String> duplicateList = new ArrayList<>(duplicate); //**************I want to change this part..************* for (int i = 0; i < duplicateList.size(); i++) { int a = 0; for (int k = 0; k < checkList.size(); k++) { if (duplicateList.get(i).trim().equals(checkList.get(k).trim())) { if(a!=0){ checkList.set(k, checkList.get(k) + a); } a++; } } } return checkList;}这是我改变它的方式(产生错误):类型不匹配:无法从元素类型 String 转换为 Integer for (Integer i : duplicateList) { int a = 0; for (Integer k :checkList) { if (duplicateList.get(i).trim().equals(checkList.get(k).trim())) { if(a!=0){ checkList.set(k, checkList.get(k) + a); } a++; } } }请问有什么帮助吗?
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
你声明:
Set<String> duplicate = new HashSet<>();
但是您尝试在 Integer 上进行迭代:
for (Integer i : duplicateList) {所以你自然必须尊重类型:
for (String s : duplicateList) {添加回答
举报
0/150
提交
取消
