假设我有
class Dummy {
String a, b;
public Dummy(String a, String b) {
this.a = a;
this.b = b;
}
public String toString(){
return a+b;
}
public String getA() {
return a;
}
public String getB() {
return b;
}
}
我想拥有
List<Dummy> myList = new ArrayList<Dummy>() {{
add(new Dummy("test", ""));
add(new Dummy("boo", "o"));
}};
System.out.println( myList.toString());
System.out.println( myList.getAs()); //should return ["test", "boo"]
System.out.println( myList.getBs());//should return ["", "o"]
如果你明白我的意思
可能必须创建扩展
ArrayList<Dummy>
的类?编辑:
好像很好
class Dummy {
String a, b;
//...
public static String toAString(List<Dummy> l){
String s="";
for (Dummy d : l){
s+=d.a;
}
return s;
}
}
编辑2:
我的Dummy中只有2个Strings,这样做是不是最好是
ArrayList<String []>
?在记忆方面 最佳答案
定义对应于getA
和getB
的一流函数。我为此使用Guava中的Function
。
class Dummy {
String a, b;
public Dummy(String a, String b) {
this.a = a;
this.b = b;
}
public String toString(){
return a+b;
}
public String getA() {
return a;
}
public String getB() {
return b;
}
public static Function<Dummy, String> getA = new Function<Dummy, String>() {
public String apply(Dummy d) {
return d.a;
}
}
public static Function<Dummy, String> getB = new Function<Dummy, String>() {
public String apply(Dummy d) {
return d.b;
}
}
}
这是使用它的方式:(下面的
Iterables
也来自番石榴)。List<Dummy> myList = new ArrayList<Dummy>() {{
add(new Dummy("test", ""));
add(new Dummy("boo", "o"));
}};
System.out.println( myList.toString());
System.out.println( Iterables.transform(myList, Dummy.getA)); // returns ["test", "boo"]
System.out.println( Iterables.transform(myList, Dummy.getB)); // returns ["", "o"]