【问题标题】:How to subSet from SortedSet<String>如何从 SortedSet<String> 子集
【发布时间】:2017-06-02 00:52:02
【问题描述】:

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

import java.util.*;

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

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

【问题讨论】:

标签: java collections subset sortedset


【解决方案1】:

您可以使用 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;

}

【讨论】:

    【解决方案2】:

    您可以简单地通过组合 subSet() 和 removeAll() 方法来做到这一点:

    public static void deleteKWords(SortedSet<String> set) {
        Set s = new TreeSet<>(set.subSet("K", "O"));
        set.removeAll(s);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      相关资源
      最近更新 更多