例如,["ab", "#SomeHash", "qwlerkj", "!@#!@", "sdfs", "#anotherhash"]
到["#SomeHash", "#anotherhash"]
或包含["#SomeHash", "#anotherhash"]
的ArrayList。
我尝试使用lambda4j,它不断给我一个空列表。
List<String> hashtagWords = select(statusText.split(" "), hasItemInArray(startsWith("#")));
我使用的是Java 7,所以我不能使用Java 8功能。 请帮帮我。
答案 0 :(得分:1)
可能是老学校,但是做了工作
List<String> list = new ArrayList<String>();
List<String> hashTagList = new ArrayList<String>();
list.add("ab");
list.add("#SomeHash");
list.add("qwlerkj");
list.add("!@#!@");
list.add("sdfs");
list.add("#anotherhash");
Iterator<String> listItr = list.iterator();
while (listItr.hasNext()){
String element = listItr.next();
if(element.startsWith("#")){
hashList.add(element);
}
}
hasTagList
包含哈希字符串
修改强>
使用Lambda4j和Hamcrest Matcher可以在没有迭代的情况下以单行完成。
List<String> hashWordsList = filter(startsWith("#"),
asList("ab","#SomeHash","qwlerkj","!@#!@","sdfs","#anotherhash"));
答案 1 :(得分:0)
你在标题中说你有一系列随机单词,但你的代码示例看起来好像有String
(statusText
)。我将在这里假设你已经拥有一个阵列。 (您可以使用String.split()
或任何您需要的东西来获取它。)
在Java 7中,您可以这样做:
List<String> hashTagWords = new ArrayList<>();
for (String word : statusWords) {
if (word.startsWith("#")) {
hashTagWords.add(word);
}
}
return hashTagWords;
一旦你进入Java 8,这应该可以解决问题:
return Arrays.stream(statusWords)
.filter(word -> word.startsWith("#"))
.collect(Collectors.toList());