如何在较大的字符串上找到特定的字符串?

时间:2014-05-12 02:11:31

标签: java string if-statement duplicates treemap

我试图摆脱多个特定的字符串。例如,我有一个打印的字符串:

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

我的目标是删除重复项以便打印:

  1. 西斯
  2. bounty hunter
  3. 机器人
  4. 如果我将其中一个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并且不会将其添加到部门。

4 个答案:

答案 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";