Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过排序将数字添加到ArrayList_Java_Sorting_Arraylist - Fatal编程技术网

Java 通过排序将数字添加到ArrayList

Java 通过排序将数字添加到ArrayList,java,sorting,arraylist,Java,Sorting,Arraylist,包括一个方法addeventtimeline,该方法将被传递一个事件。将元素添加到事件的数组列表时,应将其放在列表中的正确位置。事件中的元素应始终按时间顺序排列 使用与我们昨天使用的类似的逻辑和代码将事件添加到 在列表中的正确位置。(事件使用compareTo进行比较) 到目前为止,我的代码是这样的。我知道这是错的,但我不知道从这里该怎么办 public void addEventToTimeline(Event a){ for(int i = 0; i <events.size(

包括一个方法
addeventtimeline
,该方法将被传递一个
事件
。将
元素
添加到事件的
数组列表
时,应将其放在列表中的正确位置。事件中的元素应始终按时间顺序排列

使用与我们昨天使用的类似的逻辑和代码将
事件添加到
在列表中的正确位置。(
事件
使用
compareTo
进行比较)

到目前为止,我的代码是这样的。我知道这是错的,但我不知道从这里该怎么办

public void addEventToTimeline(Event a){
    for(int i = 0; i <events.size(); i++){
        if(a.compareTo(events.get(i))<0);
        events.add(i+1, events.get(i));
        events.set(i, a);


    }

}
public void addeventto时间线(事件a){

对于(int i=0;i您是否被迫使用ArrayList?对于此类问题,我将使用树。以下是使用ArrayList解决方案应该做的:

  • 如果arrayList未排序,则查找新事件的正确位置(O(n);如果已排序,则查找日志(n)——使用二进制搜索
  • 将事件放在其位置,并将所有后续事件向右移动一个位置(O(n))
  • 我会使用更高级的数据结构来实现这一点。例如,如果每次只需要min事件,请使用

    如果您需要全球订单,请使用,甚至更好的


    也可能有用

    哪种语言?Javascript?如果是,请添加相应的语言标记。Java,我添加了它。谢谢。阅读列表的javadoc。添加():。阅读集合的javadoc。binarySearch():