我想声明两种方法。其中一个应该打印List,另一个应该打印List>。所以我宣布了以下代码,但它们有问题。有没有人可以帮我解决这个问题。
/* print the List<List<String>> */
public static <T> void print(List<List<T>> set) {
if (set == null) return;
for (List<T> subSet : set) {
System.out.print("[");
for (int i = 0; i < subSet.size() - 1; i++) {
System.out.print(subSet.get(i) + ", ");
}
if (subSet.size() >= 1) {
System.out.print(subSet.get(subSet.size() - 1));
}
System.out.println("]");
}
}
/* print the List<String> */
public static <T> void print(List<T> set) {
if (set == null) return;
int size = set.size();
System.out.print("[");
for (int i = 0; i < size - 1; i++) {
System.out.print(set.get(i) + ", ");
}
System.out.println(set.get(set.size() - 1) + "]");
}
答案 0 :(得分:1)
如果第二种方法实际上是第一种类型,如果编译器不知道该类型具有嵌套列表,则存在这种风险。
我会把它们结合起来
public static <T> void print(Collection<T> set) {
if (set == null) {
System.out.print("null");
return;
}
System.out.print("[ ");
String sep = "";
for (T t : set) {
System.out.print(sep);
sep = ", ";
if (t instanceof Collection) {
print((Collection) t);
} else {
System.out.print(t);
}
}
System.out.print(" ]");
}
public static <T> void println(Collection<T> set) {
print(set);
System.out.println();
}