我必须编写一个代码,可以删除以K开头的SortedSet的所有单词。
import java.util.*;
public class Deleter {
public static void deleteKWords(SortedSet<String> set) {
set.subSet("K", "");
}
}
}
我听说过subSet可以简单解决,但我不能。
答案 0 :(得分:1)
您可以通过组合subSet()和removeAll()方法来实现此目的:
public static void deleteKWords(SortedSet<String> set) {
Set s = new TreeSet<>(set.subSet("K", "O"));
set.removeAll(s);
}
答案 1 :(得分:0)
您可以使用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;
}