将字符串插入已排序的数组字符串列表中的最有效方法是什么?

Coo*_*117 5 java string add arraylist

我有一个ArrayList,里面有17,000个单词.我只需要在列表中添加一个单词,如果它还没有,我需要保留列表的排序顺序.即,我需要将其放入按字母顺序排列的正确位置.

我不知道如何找到插入它的正确位置.我正在使用二进制搜索来查找该单词是否已经在列表中,如果它在那里则返回索引,如果不是则返回-1.我打算使用ArrayList.add(int index,E element)将其放入.

Jea*_*rin 1

我想到了二分搜索,列表 api 可能包含更好的内容

在二分搜索中,您将到达剩下 2 个项目的地步,一个在上面,一个在下面,其中一个可能 == 到您的项目。对于您的情况,您不会有 == 情况,因此返回较高索引的索引并插入到其位置。不知道java有没有tuple类,或者可以建一个容器。无论哪种方式,返回类似:

(bool, int) binSearch(IList list)
  returns true, -1 if found
  returns false, higher of 2 bounds otherwise
Run Code Online (Sandbox Code Playgroud)

显然这不是java,但转换起来并不困难