2017-09-02 96 views
1

我希望讓我的print語句返回「一些隨機文本」覆蓋的toString()爲迭代變量

HashSet<List<Integer>> set = new HashSet<List<Integer>>(){ 
    @Override 
    public String toString(){ 
     return "some random text"; 
    } 
}; 

//Code that assigns some values to the set variable 
for(List<Integer>subSequence:set){ 
    System.out.println(subSequence.toString()); 
} //Still prints the values in the Lists 

我怎樣才能得到「一些隨機文本」修改toString()方法來打印的集合中的每個列表?

+0

但由於內容是'整型'這是不可能的。 –

+3

「我怎樣才能得到」一些隨機文本「來打印每一個列表中的」System.out.println(「一些隨機文本」);' –

+1

不太輕鬆的答案是'System.out.println(someMethodBuildingTheStringYouWant的subSequence))'。 –

回答

1

您覆蓋匿名HashSet類的toString()方法。
雖然您在代碼中調用了HashSet的元素的toString()方法:List<Integer>
重寫方法將不會被使用。

我怎樣才能得到「一些隨機文本」打印設置中的每個列表?

你不能用List的實際方法實現自己的toString()實現。

您可以創建並使用自己的List實現,以便能夠覆蓋toString,但它似乎過於複雜,因爲這樣一個簡單的需要。

如果我是你,我會定義toString()實現匿名HashSet類的迭代的元素,我會顯示每一個消息:

HashSet<List<Integer>> set = new HashSet<List<Integer>>() { 
    @Override 
    public String toString() { 
    if (size() == 0) { 
     return ""; 
    } 

    StringBuilder sb = new StringBuilder(); 
    Iterator<List<Integer>> it = iterator(); 
    sb.append('['); 
    for (;;) { 
     it.next(); 
     sb.append("some random text"); 

     if (!it.hasNext()) { 
      return sb.append(']').toString(); 
     } 
     sb.append(',').append(' '); 
    } 
    } 
};