Collections.binarySearch难度大

时间:2016-11-27 23:28:33

标签: java arraylist netbeans binary-search

我是JAVA和Netbeans的新手,这就是我要做的事情:
用户可以在输入框中写入CD标题,然后按“删除”按钮从列表中删除CD。如果集合中不存在CD,则可以在发件箱中显示消息以说明此情况。我必须使用Collections.binarySearch()来执行此操作。这只是整个计划的一部分,但我已经弄明白了其余部分。这就是我所做的:

ArrayList <String> songs = new ArrayList();
Collections.addAll(songs, "Metric - Fantasies", "\nBeatles - Abbey Road", "\nPearl Jam - Ten", "\nDoors - Alive", "\nThe Rolling Stones - Gimme Shelter\n");
Collections.sort(songs, String.CASE_INSENSITIVE_ORDER);
Collections.binarySearch(songs,"",String.CASE_INSENSITIVE_ORDER);
String delete=songs.remove(songs.size()-1);
String out="";
    String Out = null;
        for (int i = 0; i < songs.size(); i++)
    Out=out + songs;{
        output.setText("Original Order\n**************\n" + Out+delete);

我遇到的问题是,如果我添加自己的歌曲,然后按删除它有效,但如果我尝试删除arraylist中的任何歌曲它不起作用。非常感谢任何帮助,并提前感谢您!

1 个答案:

答案 0 :(得分:0)

您的代码始终会删除列表中的最后一首歌曲。这就是为什么它与你添加的歌曲“一起工作”的原因。它没有使用搜索结果。

// binarySearch returns the position of the element in the list
// Or a negative number if not found.
int i = Collections.binarySearch(songs, "metric - fantasies", String.CASE_INSENTITIVE_ORDER);
if (i < 0) {
    // Not found, display something
} else {
    String deleted = songs.remove(i);
}

请记住,阅读API文档并了解方法的作用,而不是您的想法。