Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从列表中删除“元素”;“较低”;超过指定元素_Java_List_Collections - Fatal编程技术网

Java 如何从列表中删除“元素”;“较低”;超过指定元素

Java 如何从列表中删除“元素”;“较低”;超过指定元素,java,list,collections,Java,List,Collections,我有一个列表,我使用集合按字母顺序排序。排序(…)。现在我有一个引用字符串,我想从列表中删除比我的引用字符串“低”(按字母顺序)的所有字符串。有没有什么好方法可以做到这一点,或者我应该一个接一个地浏览列表,并将每个记录与参考值进行比较 编辑: 因为有人要求在这里找到工作解决方案原始列表是列表。。。此解决方案将消除重复性 String filterString = "..."; TreeSet<String> tSet = new TreeSet<String>(origi

我有一个
列表
,我使用
集合按字母顺序排序。排序(…)
。现在我有一个引用
字符串
,我想从
列表
中删除比我的引用字符串“低”(按字母顺序)的所有字符串。有没有什么好方法可以做到这一点,或者我应该一个接一个地浏览列表,并将每个记录与参考值进行比较

编辑: 因为有人要求在这里找到工作解决方案<代码>原始列表是
列表
。。。此解决方案将消除重复性

String filterString = "...";
TreeSet<String> tSet = new TreeSet<String>(originalList);
List<String> filteredResources = new ArrayList<String>(tSet.tailSet());
字符串过滤器字符串=“…”;
树集tSet=新树集(原始列表);
List filteredResources=newarraylist(tSet.tailSet());

这是我能想到的最好的方法

  • 对列表排序
  • 从最底层开始,一个接一个地浏览列表
  • 到达一个点,直到列表元素高于您拥有的列表元素
  • 打破循环
  • 记下此索引,并使用子列表函数按此索引拆分列表

  • 一旦对它进行了排序,就可以使用一个函数来迭代列表并执行比较。一旦发现比较未命中,就知道可以停止迭代,因为列表已排序

    但是请注意,排序是一个相对昂贵的操作,因此从开始到结束执行比较时只迭代列表会更有效


    您还可以使用一种算法来检查中间(
    list.size()/2
    )元素,然后再次上下移动,将结果集减半,依此类推,直到找到收敛点


    例如,使用列表查找
    {a”,“b”,“c”,“d”,“E”,“f”,“g”}
    将对中间元素
    “d”
    执行比较,然后查看下半部分
    {E”,“f”,“g}
    的中间
    “f”
    元素,其中立即找到匹配项,并且算法可以停止

    如果没有重复项,则可以执行以下操作:

  • 使用
  • 现在只需调用(refString)

  • 你能用一个工作示例来说明你是如何解决它的,以便便于进一步参考。(+1表示tailSet)kevin我理解。但我要求提供一个示例。我将它添加到了quiestion本身。-1因为这种解决方案至少应该使用二进制搜索(O(log N))。原始列表中的重复项会发生什么情况。恐怕这些重复的项目将不会出现在尾套中。是的,请参见问题中的编辑,它从2011年2月开始出现:)