【发布时间】:2012-04-02 21:40:00
【问题描述】:
美好的一天!
我想问一下我是否有一个项目清单,比如 1,2,3,4,5.. 然后我将替换值“3”插入“7”,这将提示我一个错误,因为列表不是连续的。
List<Domain> items = new ArrayList<Domain>();
【问题讨论】:
-
为什么不写一个方法来检查你要插入的项目是否比它的前一个大,比它的后继小?
美好的一天!
我想问一下我是否有一个项目清单,比如 1,2,3,4,5.. 然后我将替换值“3”插入“7”,这将提示我一个错误,因为列表不是连续的。
List<Domain> items = new ArrayList<Domain>();
【问题讨论】:
您可以重写 ArrayList、set 和 add 方法来检查设置/添加的项是否有效,如果不是则抛出 IllegalArgumentException。
为什么没有一个总是排序的集合。
SortedSet<Domain> items = new TreeSet<Domain>();
这样,您添加的项目将始终在正确的位置。
【讨论】:
扩展 ArrayList 并覆盖 add() & addAll() 方法,
或者简单使用Comparator & TreeSet
【讨论】:
如果您想在替换元素时获得异常,就像您描述的那样,最好的方法是扩展或包装一个列表并覆盖添加方法。
如果您真正想要的只是一个排序列表,请使用SortedSet 实现之一。
【讨论】:
如果您使用的是 Java 7,请尝试使用:
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html
【讨论】: