2014-05-12 43 views
0

我想摆脱多个特定的字符串。举例来说,我有一个打印字符串:如何在较大的字符串上找到特定的字符串?

1.jedi 2.sith 3.sith 4.sith 5.bounty猎人 6.jedi 7.sith 8.robot

我的目标是,使其打印删除重复:

  1. 绝地
  2. 西斯
  3. 赏金湖NTER
  4. 机器人

如果我改变了绝地“的东西绝地”,它不会打印的一个“东西绝地。”

输出应该是:

1.jedi 2.sith 3.bounty猎人 4.robot 5.something绝地

现在我用这个代码来达到去除的任务重复。

if (department.contains(departmentList.get(empName))){ 
} 
else{ 
    department += j + ": " + departmentList.get(empName) + "\n"; 
    j++; 
} 

我明白错误在哪里。因为我正在使用.contains(VARIABLE),所以当它检查“something jedi”时,它会发现JEDI这个词已经存在。因此它返回true,它不会将其添加到部门。

回答

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)); 
} 
+0

它确实管用!感谢贾森!这正是我需要的! – kakaday22

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 
0

首先,你的字符串分割成链接。 其次,从它做一个集合,所以它会删除所有的重复。

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"; 
相关问题