2015-06-21 93 views
-1

最近有機會了解java新手的招聘過程。可惜沒有人因爲這個計劃而進入第二輪。所以作爲一個愛好者,我問我的一個朋友給我解決方案,所以它,但由於我是新來的Java,仍然沒有暴露於收集框架,我不明白這一點。 所以可以解釋這個邏輯或代碼。需要說明此代碼塊java

問題是在不使用String類方法的情況下從字符串中刪除重複項。

public class Test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     String str="this is java this is cpp"; 

     List<String> l=new LinkedList<String>(); 
     int i=0,j; 
     for(i=0,j=str.indexOf(' ');j!=-1;i=j,j=str.indexOf(' ', i+1)) 
     { 
      String s=str.substring(i,j).trim(); 
      l.add(s); 
     } 
     String s=str.substring(i+1,str.length()).trim(); 
     l.add(s); 

     Iterator<String> it=l.iterator(); 
     List<String> list=new LinkedList<String>(); 
     while(it.hasNext()) 
     { 
      String s1=it.next(); 
      if(!list.contains(s1)){ 
       list.add(s1); 
      }else 
      { 
       list.remove(s1); 
      } 
     } 
     System.out.println(list); 
    } 

} 

in for循環我正在檢查String的索引,但是j是什麼? 現在我知道只有(i=0;i<string.length();i++)種for循環...沒有得到for循環內的額外int。

順便說一下,這個程序對java新手來說有多複雜?

+0

這是一個非常標準的(如果設計的話)字符串處理函數......如果您熟悉字符串處理,不應該太難編寫。 (嘗試寫作,例如,自己作爲練習的字符串反轉函數)。 – nneonneo

+0

是的先生,我正在練習編程技巧,採取coderbyte,編碼batb程序:) – KindZadZa

+0

@TimBiegeleisen ..它不是我的代碼..我是新的Java ..我沒寫過它 – KindZadZa

回答

1

您需要修改最後的while循環內部的邏輯。 if聲明是正確的,但如果遇到重複項,則不應刪除已在列表中的項。

Iterator<String> it = l.iterator(); 
List<String> list = new LinkedList<String>(); 
while (it.hasNext()) { 
    String s1 = it.next(); 
    if (!list.contains(s1)) { 
     list.add(s1); 
    } 
} 
+0

謝謝你先生的回覆:) – KindZadZa

1
for循環

,您可以用每3個部分特定事項:

for (/* part1 */ ; /* part2 */ ; /* part3 */) 

首先,所有這3個部分是強制性的,如果你寫for(;;)你可能需要一個無限循環,但無論如何你需要break

在第一部分

,你可以啓動任何數量的變量與,

for(int i=0, int j=-10, int k=0 ; ... ; ...) 

在第2部分分離可以檢查任何數量的條件,使循環結束

for(.... ; i<=j, j>10, i<500 ; ...) 

終於,在第3部分,您有權對任何數量的變量執行一些操作(通常是增加計數器)

for(.... ; ... ; i++, j++, k+=2) 

考慮到所有這些因素,您的代碼正在嘗試拆分子字符串,並顯示主字符串str中明顯的單詞集合。

如何?

j = str.indexOf(' ', i+1) 

有竅門。它會找到主要字符串的下一個空白' '部分,並嘗試將當前索引的子字符串拉到下一個空格。需要更多的解釋?

+0

謝謝你的回覆:) – KindZadZa

+0

歡迎你@KindZadZa –