Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 如何从SortedSet_Java_Collections_Subset_Sortedset - Fatal编程技术网

Java 如何从SortedSet

Java 如何从SortedSet,java,collections,subset,sortedset,Java,Collections,Subset,Sortedset,我必须写一个代码,可以删除一个以K开头的SortedSet的所有单词 import java.util.*; public class Deleter { public static void deleteKWords(SortedSet<String> set) { set.subSet("K", ""); } } } 我听说,使用子集可以简单地解决问题,但我不能。您可以通过使用Java

我必须写一个代码,可以删除一个以K开头的SortedSet的所有单词

import java.util.*;

public class Deleter {
    
    public static void deleteKWords(SortedSet<String> set) {
        set.subSet("K", "");
}
    }
    
}

我听说,使用子集可以简单地解决问题,但我不能。

您可以通过使用Java 8流实现您想要的:

public static SortedSet<String> deleteKWords(SortedSet<String> set) {
   return new TreeSet<>(set
           .stream()
           .filter((s) -> !s.startsWith("K"))
           .collect(Collectors.toSet()));

}
编辑: 避免每次都创建新对象,只修改发送给方法的对象可能会更有效:

 public static SortedSet<String> deleteKWords(SortedSet<String> set) {
    set.removeAll(set
            .stream()
            .filter((s) -> s.startsWith("K"))
            .collect(Collectors.toList()));
    return set;

}

您可以通过组合subSet和removeAll方法来实现这一点:


阅读和的javadoc,然后将它们组合在一起:set.subSetK,L.clear我投票结束这个问题,因为它脱离了主题。
public static void deleteKWords(SortedSet<String> set) {
    Set s = new TreeSet<>(set.subSet("K", "O"));
    set.removeAll(s);
}