我不确定为什么我的removeDuplicates方法拒绝实际摆脱非唯一值。我不确定问题是否与大小增加或方法调用有关。// post: places the value in the correct place based on ascending orderpublic void add(int value) { size++; if (size == 1) { elementData[0] = value; } else { int position = Arrays.binarySearch(elementData, 0, size - 1, value); if (position < 0 ) { position = (-position) - 1; } for (int i = size - 1; i > position; i--) { elementData[i] = elementData[i - 1]; } elementData[position] = value; } if (unique) { removeDuplicates(); }}//post: removes any duplicate values from the listprivate void removeDuplicates() { for(int i = size - 1; i > 0; i--) { if (elementData[i] == elementData[i - 1]){ remove(i - 1); } }} 最佳答案 @ user98643-Jano的建议是正确的:最好的解决方案是简单地使用适当的数据结构,例如TreeSet。建议:1)通常,始终考虑使用诸如“ List ”之类的容器优先于数组2)通常,寻找已具有所需大多数属性的容器3)在这种情况下,A)您希望所有元素排序,B)每个元素必须唯一。TreeSet非常适合帐单。恕我直言..http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.htmlhttp://math.hws.edu/javanotes/c10/s2.htmlhttp://www.mkyong.com/java/what-is-the-different-between-set-and-list/
08-04 20:25