前提条件:列表已经排序了!
这是否可能以下列方式实现:
Comparator
排序列表我更喜欢以下情景:
Comparator
新项目的位置计算是否可行?
修改
我应该提一下,我使用外国图书馆,我只需要这个东西,保持同步列表(在我的情况下项目和选择状态)
答案 0 :(得分:2)
使用TreeSet
,您不必担心对集合进行排序。如果您打算多次这样做,那就特别好。
答案 1 :(得分:2)
如果列表已经排序,则使用Collections.binarySearch(list,element,comparator)和用于排序的相同Comparator。它将返回插入位置i。使用list.add(i,element)插入元素。如果我< 0然后使用i = -i - 1作为插入点
答案 2 :(得分:0)
你可以自己计算这个指数。主要问题是定义moreThan()操作(例如,我假设你有升序)。我是你想知道的索引。
if(insertedElement.moreThan(list.get(list.size()-1))){
i = list.size();
}else{
for(i=0; i<list.size(); i++){
if(list.get(i).moreThan(insertedElement)){
break;
}
}
}
在使用add(index, element)
方法之后,将添加新元素,将移动下一个元素并保存列表顺序。