将项目插入列表,对其进行排序并在插入后检索项目的索引

时间:2013-11-15 09:09:46

标签: java list arraylist comparator

前提条件:列表已经排序了!

这是否可能以下列方式实现:

  1. 将项目添加到列表
  2. 再次使用Comparator排序列表
  3. 项目的搜索列表
  4. 返回插入项目的索引
  5. 我更喜欢以下情景:

    1. 计算新项目的索引(如果在考虑Comparator
    2. 的情况下将其添加到排序列表中)
    3. 在此位置插入项目
    4. 新项目的位置计算是否可行?

      修改

      我应该提一下,我使用外国图书馆,我只需要这个东西,保持同步列表(在我的情况下项目和选择状态)

3 个答案:

答案 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)方法之后,将添加新元素,将移动下一个元素并保存列表顺序。