簡體   English   中英

如何獲取ArrayList的每個元素的toString?

[英]How to get toString for each element of an ArrayList?

我有這個類的構造函數以String和Arraylist作為參數;

class Foo{
    String ide;
    ArrayList list;

    public TypeOperator(String ide, ArrayList list){
        this.ide = ide;
        this.list = list;
    }
}

所以當我像下面這樣初始化類時:

ArrayList<SomeType> list = new ArrayList<Some Type>;
list.add(SomeType1);
list.add(SomeType2);
Foo one = new Foo("->", list);

有沒有辦法打印如下格式:

SomeType 2 -> SomeType 1

假設我有一個SomeType類。 我在SomeType類中有事嗎?

首先,強烈建議您不要使用原始類型。 List是一種通用類型,因此應將其用作通用類型。

然后,您要做的只是一個join操作。 如果您使用的是Java 8,則可以

list.stream().collect(Collectors.joining(" -> "))

在普通的Java中,您可以

StringBuilder sb = new StringBuilder();
Iterator<T> it = list.iterator();

if (it.hasNext()) sb.append(it.next());
while (it.hasNext()) {
    sb.append(" -> ").append(it.next());
}
String result = sb.toString();

您需要從Foo實現toString()方法,該方法類似於:

public String toString(){
    String result  = "" ;
    for(int  i = list.size()-1;i>0;i--){
        result = result+ list.get(i).toString() + " " + ide + " ";
    }
    result = result + list.get(0).toString();
    return result;
}

或者,如Dici指出的那樣,具有更好的性能:

    public String toString(){


    StringBuilder result  = new StringBuilder() ;
    if (!list.isEmpty()){
        for(int  i = list.size()-1;i>0;i--){
            result.append(list.get(i).toString()).append(" ").append(ide).append(" ");
        }
        result.append(list.get(0).toString());
    }
    return result.toString();
}

然后按照您要顯示SomeType的方式,您可能必須實現自己的toString方法。

您需要在Foo類中創建toElementString方法。

 public String toElementString(){
        if(list == null || list.size() == 0) return "";
        StringBuffer buffer = new StringBuffer();
        int size = list.size();
        for(int i = 0; i < size;i++){
            buffer.append(list.get(i));
            if(i != (size - 1)){
                buffer.append(" ");
                buffer.append(ide);
                buffer.append(" ");
            }
        }
        System.out.println(buffer.toString());
        return buffer.toString();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM