2014-01-28 163 views
0

編輯, 它真的很遺憾,我不能分享圖片,但讓我們再試一次。class in class in java

我有一個數組,其中有4個部分,第一部分只接受那些以a開頭的字符串,最後一個以d開頭的字符串。

輸入串只包含A,B,C,d,使其簡單,

當輸入來自哪個是「BCDA」

,然後它將進入陣列1。然後接下來它應該選擇數組[2],因爲第二個字符是c,然後是數組[3],然後是數組[4]的字符a。

然後我會插入這個字符串。所以下一次,如果我想看到給定的字符串讓說相同的「bcda」存在與否,而不是比較可用集中的所有字符串,我將遍歷路徑通過使用字符序列,然後我會知道這個字符串名稱存在與否。

假設我輸入了一些基於a,b,c,d的字符串。

對於ecample,「acdb」,「bcda」,「dbca」等。

我想要什麼,當我的程序收到字符串「acdb」時,它會像這樣保存。

---------------- 
| a| b | c | d | 
---------------- 
    | 
    | 
---------------- 
| a| b | c | d | 
---------------- 
     | 
     | 
---------------- 
| a| b | c | d | 
---------------- 
      | 
      | 
---------------- 
| a| b | c | d | 
---------------- 
    | 
    | 
and here it can add string in list 

很不幸,我不能添加圖像,因爲我的幾點。 :(我希望我在自我創建的圖像correctally解釋。

所以,當我將伊斯利搜索任何字符串規定範圍之內,然後我可以trevers,發現該字符串的存在與否。

我很困惑如何創建類中的類中的類... :(

我可以創建一個簡單的列表,並在陣列中添加指定的字符串。這是很簡單,但不能向前推進。

class MyList { 

    TreeSet<String> list = new TreeSet<String>(); 

} 

class Test 
{ 
    MyList Array[] = new MyList [4]; 

    public Test(){ 
     for (int k = 0; k < 4; k++){ 

      Array[k] = new MyList(); 
     } 
    } 
} 
+0

你想格式化你的輸出嗎? –

+0

爲什麼不使用TreeSet ? – richardtz

+0

'Collections.sort(str.toCharArray())' – Sorter

回答

0

如果你想創建一個班級,這裏是你如何做到這一點。當你的內部類與你的外部類緊密相關時,你可以使用它,但在其他任何地方都不會使用它。或者,也許你只是想不管出於什麼原因將它們組合在一起。

class OuterClass { 

    class InnerClass { 

    } 

} 

如果你想一類以自身,這裏是你將如何實現這一目標。你可以這樣做來創建一個對象列表。這看起來更像你想要做的。

class MyClass { 

    MyClass nextInTheList; 

    public MyClass() { 

    } 

    public void setNext(MyClass next) { 
     nextInTheList = next; 
    } 
} 
0

內部類幾乎與您的問題無關。這裏是你是什麼真正要做的:

public class CharNode extends AbstractCollection<CharSequence>{ 
    Map<Character, CharNode> children = new HashMap<>(); 
    int mark = 0; 

    @Override 
    public void add(CharSequence s){ 
     if(s.length()==0){mark++; return} 
     if(!children.containsKey(s.charAt(0)) 
      children.put(s.charAt(0), new CharNode()); 

     children.get(s.charAt(0)).add(s.subSequence(1,s.length())); 
    } 

    @Override 
    public void remove(CharSequence s){ 
     if(s.length()==0){mark--; return;} 

     CharNode child = children.get(s.charAt(0)); 
     child.remove(s.subSequence(1,s.length())); 

     if(child.isEmpty()) children.remove(s.charAt(0)); 
    } 

    @Override 
    public boolean contains(CharSequence s){ 
     if(s.length()==0) return mark; 
     return children.containsKey(s.charAt(0)) && 
       children.get(s.charAt(0)).contains(s.subSequence(1,s.length())); 
    } 

    @Override 
    public int size(){ 
     int result = mark; 
     for(CharNode child: children.values()) result+= child.size(); 
     return result; 
    } 

    @Override 
    public Iterator<CharSequence> iterator(){ 
     return new Iterator<CharSequence>(){ 
      @Override public boolean hasNext(){ /* you do this part */ } 
      @Override public CharSequence next(){ /* you do this part */ } 
      @Override public boolean remove(){ /* you do this part */ } 
     } 
    } 


} 

的最後方法,iterator,涉及到使用匿名內部類,這是唯一的一種內部類的那是非常重要的,而只有類型我會推薦供不熟悉內部類工作方式的人使用。