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”
元素,其中立即找到匹配项,并且算法可以停止 如果没有重复项,则可以执行以下操作:
你能用一个工作示例来说明你是如何解决它的,以便便于进一步参考。(+1表示tailSet)kevin我理解。但我要求提供一个示例。我将它添加到了quiestion本身。-1因为这种解决方案至少应该使用二进制搜索(O(log N))。原始列表中的重复项会发生什么情况。恐怕这些重复的项目将不会出现在尾套中。是的,请参见问题中的编辑,它从2011年2月开始出现:)