此方法用于检查重复的变量。 最近,我发现了一种新语法:
for-loop(String s: List) like this.
我试图将新指令应用于当前代码,但这会导致错误
Type mismatch: cannot convert from element type String to Integer
我想重构我的代码(请告知我)
为什么要使用语法(for(Integer i:重复列表)// 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++;
}
}
}
请帮忙吗?
答案 0 :(得分:1)
You declared:
Set<String> duplicate = new HashSet<>();
But you tried to iterate on Integer:
for (Integer i : duplicateList) {
So you naturally must respect the type:
for (String s : duplicateList) {