2014-05-12 59 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"; 
相關問題