如何获取ArrayList的每个元素的toString?

时间:2016-07-10 01:01:34

标签: java list 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类中有事可做吗?

3 个答案:

答案 0 :(得分:1)

首先,强烈建议远离原始类型。 List是泛型类型,因此您应将其用作泛型类型。

然后,您想要做的只是加入操作。如果您使用的是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();

答案 1 :(得分:1)

你需要从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方法。

答案 2 :(得分:0)

您需要在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();
    }