我让这个类有构造函数,将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类中有事可做吗?
答案 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();
}