java函数 - print(集合c)?

时间:2010-01-05 17:34:31

标签: java function input collections

我正在努力学习java,我有一个问题。

假设我有两个集合,一个ArrayList和一个LinkedHashSet。是否可以制作这样的函数:

void print(collection c) {
    for (object tmp:c) {
        System.out.println(tmp);
    }
}

6 个答案:

答案 0 :(得分:7)

注意你的大写:

private void printCollection(Collection collection) {

   for (Object obj : collection) {
      System.out.println(obj);
   }
}

答案 1 :(得分:2)

是。 ArrayList和LinkedHashSet都是集合。您编写的方法接受Collection(注意大写C),因此它将接受任何类型的集合。这被称为多态。

答案 2 :(得分:1)

这两种类型都可以实现Collection<E>。约定是Java中的类类型以大写字母开头。从1.5开始,Java已将generics用于其集合,您应该在所有新代码中使用它们。由于您使用的是1.5样式for循环,因此应编写通用代码。

通常最好使函数尽可能在最不具体的类型上运行,因为这样可以实现最广泛的重用。在这种情况下,你只需要一些可以从Collection<T>Iterable<T>的东西,因为你只需要一些可以用于for循环的东西。因此,结合泛型和最小功率给出了:

public class PrintLinePrinter {
    public <T> void print (Iterable<T> collection) { 
        for (T item : collection) {
            System.out.println(item); 
        }
    } 
} 

答案 3 :(得分:1)

System.out.println(Collection c)已经以可读格式打印任何类型的集合。 但是如果集合包含用户定义的对象,那么您需要在用户定义的类中实现toString()。

答案 4 :(得分:0)

'免费循环'解决方案:

void print(collection c) {
    System.out.println( Arrays.toString(c.toArray())); }

答案 5 :(得分:-2)

基本上你只需要使用迭代器:

void print(collection c) 
{ 
    for (object tmp:c.iterator()) 
    { 
        System.out.println(tmp); 
    } 
}