我试图摆脱多个特定的字符串。例如,我有一个打印的字符串:
1.jedi 2.sith 3.sith 4.sith 5.赏金猎人 6.jedi 7.sith 8.robot
我的目标是删除重复项以便打印:
如果我将其中一个jedi更改为" jedi。",它将不会打印" jedi。"
输出应为:
1.jedi 2.sith 3.赏金猎人 4.robot 5.something jedi
现在我正在使用此代码来完成删除重复项的任务。
if (department.contains(departmentList.get(empName))){
}
else{
department += j + ": " + departmentList.get(empName) + "\n";
j++;
}
我明白错误在哪里。因为我正在使用.contains(VARIABLE),当它检查" jedi"它会发现JEDI这个词已经存在了。因此它返回true并且不会将其添加到部门。
答案 0 :(得分:0)
创建一个集合以包含已输出的部门的全名。每次要输出部门时,请检查该集是否已包含部门。如果没有,则输出部门名称并将其添加到集合中。
例如:
Set<String> usedDepartments = new HashSet<String>();
然后在你的循环中:
if(!usedDepartments.contains(departmentList.get(empName))) {
department += j + ": " + departmentList.get(empName) + "\n";
j++;
usedDepartments.add(departmentList.get(empName));
}
答案 1 :(得分:0)
作为部门的值:
department += j + ": " + departmentList.get(empName) + "\n";
您可以更改您的IF声明:
if (department.contains(": " + departmentList.get(empName) + "\n"))
<强>假设:强>
department = "1: something jedi.\n";
departmentList.get(empName) = "jedi.";
department.contains(": " + departmentList.get(empName) + "\n"); // will return false
答案 2 :(得分:0)
首先,将String拆分为Link。 其次,从中创建一个Set,因此它将删除所有重复。
答案 3 :(得分:0)
department
应该是Set<String>
,而不是String
:
Set<String> departments = new HashSet<String>();
然后每个循环:
departments.add(departmentList.get(empName));
并在循环之后:
int i = 0;
String output = "";
for (String s : departments)
output += i + ": " + s + "\n";