我设置如下:
Set<String>
我需要Set make split by的每个元素;并创建仅包含第2个元素的新Set。我应该一个接一个地直接制作还是存在更好的方法? 感谢。
答案 0 :(得分:2)
Set<String> suffixSet = new HashSet<String>();
for (String s : inputSet) {
suffixSet.add(s.split(";")[1])
}
当s没有时,我还会为这种情况添加适当的错误检查和处理;本。
答案 1 :(得分:2)
如果你可以放宽对Set<String>
作为Collection<String>
的输出的约束,你可以使用Guava并推迟元素的转换,直到通过Collections2#transform()方法枚举元素。您只需编写自定义函数即可对单个元素执行拆分。
但是如果你不能/不应该放松这个约束,你最好留下已经提出的个别迭代(因为它更容易辨认)。
代码看起来像:
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];
}
});
答案 2 :(得分:1)
由于您没有显示代码,我们只能猜测您要执行的操作。您需要遍历Set
并拆分每个String
。如果需要,可以使用split方法。
答案 3 :(得分:1)
用如此少的信息很难说。您可以在split
进行迭代并添加到另一个Set
或者您可以将Set
替换为例如HashMap
当您创建地图时,将字符串的第一部分作为键,将第二部分作为值,以便在需要快速时检索第二部分。
或者,如果您自己创建字符串,请将它们直接放在不同的集合中
或者......(你说的不够)提供更多选择