为什么SortedList.add()抛出UnsupportedOperationException?

时间:2015-01-06 18:08:23

标签: java sorting javafx-8

非常简单的代码:

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.SortedList;

public final class SortedListTest {

   public static void main( String[] args ) {
      final ObservableList<Integer> il  = FXCollections.observableArrayList();
      final SortedList<Integer>     sil = new SortedList<>( il );
      sil.comparatorProperty().set((l,r)-> l-r );
      sil.add( 12 );
   }
}

执行:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at SortedListTest.main(SortedListTest.java:13)

1 个答案:

答案 0 :(得分:11)

SortedList是其基础列表的排序视图。如果允许您向排序列表添加元素,则会破坏该关系。您需要将元素添加到基础列表中:

il.add(12);