【发布时间】:2018-07-04 05:54:58
【问题描述】:
我创建了一个列表,其中保存了一些字符串。但是,当我在此列表中进行 二分搜索 时,它会返回 负值,而该项目是 在列表中。
到目前为止,当项目在列表中时,我的知识正值将返回。但是对于某些项目,它返回负数,而对于某些项目,它返回正数。
代码:
@Test
public void hello()
{
// List<String> arlst = new ArrayList<String>();
List arlst = new ArrayList();
arlst.add("TP");
arlst.add("PROVIDES");
arlst.add("QUALITY");
arlst.add("TUTORIALS");
arlst.add("Stop");
arlst.add("StopP");
for (Iterator<String> iterator = (Iterator<String>) arlst.iterator();
iterator.hasNext();)
{
Object next = iterator.next();
System.out.println("next : " + next + " >> Search result : "
+ Collections.binarySearch(arlst, next.toString()));
}
}
输出:
next : TP >> Search result : -7
next : PROVIDES >> Search result : -1
next : QUALITY >> Search result : 2
next : TUTORIALS >> Search result : -7
next : Stop >> Search result : 4
next : StopP >> Search result : 5
【问题讨论】:
-
二分查找需要对 List 进行排序。
-
请注意,您不应该使用 raw-types。写
List<String>,而不是List。后者转换为List<Object>,并且在几乎每个应用程序中,您都希望将元素限制为通用类型,例如String。即使没有,那么至少写List<Object>而不是 raw-types。
标签: java collections binary-search