Java 按升序将元素插入LinkedList

Java 按升序将元素插入LinkedList,java,list,Java,List,我试图找到一种有效的方法,在始终保持升序的同时,将Integer元素插入java.util.LinkedList列表。例如: 5->[]=>[5] 1 -> [5] => [1, 5] 3 -> [1, 5] => [1, 3, 5] 0 -> [1, 3, 5] => [0, 1, 3, 5] 这是理解链表遍历在链接数据结构中的影响的纯理论问题,请参阅。我对批量插入Integer元素或在末尾对LinkedList排序不感兴趣 我可以使用ListIterator,但是它需要两

我试图找到一种有效的方法,在始终保持升序的同时,将
Integer
元素插入
java.util.LinkedList
列表。例如:

5->[]=>[5]
1 -> [5]       => [1, 5]
3 -> [1, 5]    => [1, 3, 5]
0 -> [1, 3, 5] => [0, 1, 3, 5]
这是理解链表遍历在链接数据结构中的影响的纯理论问题,请参阅。我对批量插入
Integer
元素或在末尾对
LinkedList
排序不感兴趣

我可以使用
ListIterator
,但是它需要两个方法调用。我必须先执行
set()
,然后执行
add()
,比如:

var numbers = new Integer[] { 5, 1, 3, 0, ... };
var list = new LinkedList<Integer>();
outer:
for (Integer num : numbers) {
  var it = list.listIterator();
  while (it.hasNext()) {
    var el = it.next();
    if (num <= el) {
      it.set(num);
      it.add(el);
      continue outer;
    }
  }
  it.add(num);
}
var numbers=newinteger[]{5,1,3,0,…};
var list=newlinkedlist();
外部:
for(整数编号:数字){
var it=list.listIterator();
while(it.hasNext()){
var el=it.next();

if(numAdd方法可以接受两个输入

void add(int index, Object element)


执行二进制搜索、查找位置、使用add方法……

您的实际用例是否导致无法简单地对数字进行排序?我不认为这会比您当前的实现效率更低。@ernest_k没有实际的用例,这是理解链接数据中列表遍历的重要性的一个理论问题结构,看,我似乎很清楚,链表是解决这个问题的错误选择。而从你想要坚持的事实来看,我看不出你的分析结果会是什么。但那可能只是我。@ernest_k你能解释一下为什么
LinkedList
显然是解决这个问题的错误选择吗?我链接的视频显示,这个问题并不明显,
LinkedList
的插入操作比
ArrayList
更复杂,但是
ArrayList
对于大型
N
几乎更快。我想知道是什么让它变得明显?如果你不必使用链接列表,你可能会使用它方法类似于树集、优先级队列或其他排序集合。我并没有将您的解决方案与使用数组列表进行对比,这是一个不同的问题。如果您的练习是在链表的顶部实现类似的内容,那么我仍然不明白在没有将其与其他数据结构进行比较。同样,这可能只是我。关于二进制搜索的观点很好,谢谢。欢迎…-)