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():