public static <T> void print(Collection<T> l)
如果我有一个包含a,b和c的集合,我希望输出为
[a,b,c]
如果它是空的我希望它是
[]
我的代码现在。
public class CollectionOps {
public static <E, T extends Iterable<E>> void print(T a){
//for(Iterable type Iterable element : collection)
for (E x : a) {
System.out.print(x);
}
}
public static void main(String[] args){
ArrayList<String> a = new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
print(a);
}
}
输出:abc
也许我可以以某种方式使用System.out.printf()?
答案 0 :(得分:2)
集合类通常会覆盖toString
以准确生成该输出。因此,如果你有一个Collection
,你可以做到
System.out.println(collection);
这可行,因为println
会调用toString
。
如果您想在该表单中打印Iterable
,我只会将其设为一个集合。
List<Object> list = new ArrayList<>();
for (Object o : iterable)
list.add(o);
System.out.println(list);
另请注意,您可以使用通配符来改进方法签名。
public static void print(Iterable<?> iterable)
答案 1 :(得分:0)
大多数Java集合(List,Set,Queue等)都完全按照您的意愿实现toString
方法。那么为什么不直接使用呢?
public static void main(String[] args) {
print(Arrays.asList('a','b','c'));
print(new ArrayList());
print(new HashSet<>(Arrays.asList("a","b","c")));
print(new HashSet());
print(new PriorityQueue<>(Arrays.asList(1,2,3)));
print(new PriorityQueue<>());
}
public static <T> void print(Collection<T> l){
System.out.println(l);
}
输出:
[a, b, c]
[]
[a, b, c]
[]
[1, 2, 3]
[]