2016-03-20 2 views
1

Zum Beispiel ["ab", "#SomeHash", "qwlerkj", "[email protected]#[email protected]", "sdfs", "#anotherhash"] bis ["#SomeHash", "#anotherhash"] oder eine ArrayList mit ["#SomeHash", "#anotherhash"].Wie filtern Sie ein Array von zufälligen Wörtern zu einem Array von Hashtags?

Ich habe versucht, lambda4j, und es gibt mir eine leere Liste.

Ich benutze Java 7, also kann ich Java 8 Funktionalitäten nicht verwenden. Bitte helfen Sie mir.

+4

Warum nicht einfache Schleife verwenden? Iteriere über alle Elemente, teste sie mit deiner Hash-Bedingung, wenn das Element den Test bestehen wird, füge es der neuen Ergebnisliste hinzu. 'List hashtagWords = new ArrayList <>(); for (Zeichenfolge s: statusText.split ("")) {if (s.startsWith ("#")) hashtagWords.add (s); } ' – Pshemo

+0

Konnte auch einen regulären Ausdruck für die ursprüngliche Zeichenfolge ausführen. – segFault

+0

@Pshemo Ich möchte es auf eine originelle Weise tun, weil ich diesen Code den Leuten zeigen muss. – user2418202

Antwort

1

möglicherweise alte Schule, aber macht den Job

List<String> list = new ArrayList<String>(); 
    List<String> hashTagList = new ArrayList<String>(); 

    list.add("ab"); 
    list.add("#SomeHash"); 
    list.add("qwlerkj"); 
    list.add("[email protected]#[email protected]"); 
    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 den Hash enthält Strings

EDIT:

mit Lambda4j und Hamcrest Matcher können ohne Iterationen in einzelne Zeile durchgeführt werden.

List<String> hashWordsList = filter(startsWith("#"), 
asList("ab","#SomeHash","qwlerkj","[email protected]#[email protected]","sdfs","#anotherhash")); 
0

sagte Sie in Ihrem Titel Sie eine Reihe von zufälligen Wörtern haben, aber Ihr Code-Beispiel macht es so aussehen wie Sie ein String (statusText) haben. Ich gehe davon aus, dass Sie bereits ein Array haben. (Sie können mit String.split() oder was auch immer, müssen Sie es erhalten.)

In Java 7 Sie es auf diese Weise tun könnte:

List<String> hashTagWords = new ArrayList<>(); 
for (String word : statusWords) { 
    if (word.startsWith("#")) { 
     hashTagWords.add(word); 
    } 
} 
return hashTagWords; 

Sobald du mit Java 8 bekommen, dies den Trick tun sollten:

return Arrays.stream(statusWords) 
    .filter(word -> word.startsWith("#")) 
    .collect(Collectors.toList()); 
Verwandte Themen