如何从SortedSet中设置subSet <string>

时间:2017-01-17 20:03:20

标签: java collections subset sortedset

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

import java.util.*;

public class Deleter {

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

}

我听说过subSet可以简单解决,但我不能。

2 个答案:

答案 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;

}