![](/img/trans.png)
[英]How to get each element in List<JSONObject> json = new ArrayList<JSONObject>()
[英]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.