Mr.*_*cky -1 java generics collections reverse
我有以下任务:
"声明一个方法,期待一个Collection并在你的方法中反转它.返回给出的相同集合,不要返回一个新的集合!
static <T> void reverse (Collection<T> collection)
Run Code Online (Sandbox Code Playgroud)
不要尝试使用Collections.reverse.它仅适用于List,而不适用于集合"
我最初的想法是以下内容:
public static <T> void reverse(Collection<T> collection){
int size = collection.size();
Iterator<T> iter = collection.iterator();
Iterator<T> iter2 = collection.iterator();
for (int i = 0; i < size / 2; i++) {
collection.add(iter.next());
iter2.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不断得到奇怪的例外:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at ReverseCollection.reverse(ReverseCollection.java:16)
at ReverseCollection.main(ReverseCollection.java:25)
Run Code Online (Sandbox Code Playgroud)
知道应该怎么做吗?
您想要做的事情无法完成,因为许多Collection类(例如HashSet)不允许您控制订单.
问题是Collection没有定义一般元素的顺序.例如,考虑a Set,它不保证元素的顺序.由于没有排序,因此很难定义相反的顺序.