-1

我已经设置为:

Set<String>

我需要对 Set 的每个元素进行拆分;并创建仅包含第二个元素的新 Set。我应该直接一一制作还是以更好的方式存在?谢谢。

4

4 回答 4

2
Set<String> suffixSet = new HashSet<String>();
for (String s : inputSet) {
      suffixSet.add(s.split(";")[1])
}

当 s 没有 ; 时,我还会添加适当的错误检查和处理。展示。

于 2013-01-17T20:01:15.723 回答
2

如果您可以放松对输出 a 的约束,Set<String>您可以使用 Guava 并将元素的转换推迟到通过Collections2#transform()方法Collection<String>枚举元素之前。您只需要编写一个自定义函数来对单个元素执行拆分。

但是如果你不能/不应该放松这个约束,你最好留给已经提出的单独迭代(因为它会更清晰)。

代码看起来像:

Set<String> input; //Given
Collection<String> output = Collections2.transform(input, new Function<String,String>() {
    @Override
    public String apply (String element) {
        // As JohnnyO says, add appropriate edge case checking...
        return element.split(";")[1]; 
    }
});
于 2013-01-17T20:08:20.880 回答
1

由于您没有显示代码,我们只能猜测您要做什么。您需要遍历Set并拆分每个String. 如果需要,您可以使用拆分方法。

于 2013-01-17T19:58:03.113 回答
1

信息这么少,很难说。您可以遍历集合split并添加到另一个Set.
或者您可以替换Set为例如HashMap,当您创建映射时,将字符串的第一部分作为键,将第二部分作为值,以便您可以在需要快速检索第二部分。
或者如果你自己创建字符串,直接将它们放在不同的集合中
或者......(你说得不够)以提供更多选项

于 2013-01-17T20:02:06.603 回答