it-swarm.com.de

So suchen Sie nach einem String in einer Arrayliste

Ich möchte nach einer Zeichenfolge in einer Arrayliste suchen. Meine ArrayList enthält: 

ArrayList <String> list = new ArrayList(); 
list.add("behold");
list.add("bend");
list.add("bet");
list.add("bear");
list.add("beat");
list.add("become");
list.add("begin");

Jetzt möchte ich nach "bea" suchen und es sollte eine Liste mit "bear" und "beat"..__ zurückgegeben werden. Wie kann ich sie implementieren?

24
Romi
 List <String> list = new ArrayList();  
           list.add("behold"); 
           list.add("bend"); 
           list.add("bet"); 
           list.add("bear"); 
           list.add("beat"); 
           list.add("become"); 
           list.add("begin");

           List <String> listClone = new ArrayList<String>(); 
           for (String string : list) {
               if(string.matches("(?i)(bea).*")){
                   listClone.add(string);
               }
           }
        System.out.println(listClone);
24
Abhishek

Durchlaufen Sie Ihre Liste und führen Sie einen Inhalt oder Start aus.

ArrayList<String> resList = new ArrayList<String>();
String searchString = "bea";

for (String curVal : list){
  if (curVal.contains(searchString)){
    resList.add(curVal);
  }
}

Sie können das in eine Methode einpacken. Das enthält, ob es in der Liste ist. Sie könnten auch für den Start gehen.

17
Udo Held

Heutzutage ermöglicht Java 8 eine einzeilige Funktionslösung, die sauberer, schneller und wesentlich einfacher ist als die akzeptierte Lösung:

List<String> list = new ArrayList<>();
    list.add("behold");
    list.add("bend");
    list.add("bet");
    list.add("bear");
    list.add("beat");
    list.add("become");
    list.add("begin");

    List<String> matches = list.stream().filter(it -> it.contains("bea")).collect(Collectors.toList());

    System.out.println(matches); // [bear, beat]
10
sebnukem

Da Ihre Liste anscheinend nicht sortiert ist, müssen Sie die Elemente durchlaufen. Wenden Sie startsWith() oder contains() auf jedes Element an und speichern Sie Übereinstimmungen in einer Hilfsliste. Gib die Hilfsliste zurück, wenn du fertig bist.

8
NPE

Kann mit Java.util.HashSet einfacher sein. Zum Beispiel:

  List <String> list = new ArrayList<String>(); 
  list.add("behold");
  list.add("bend");
  list.add("bet");

  //Load the list into a hashSet
  Set<String> set = new HashSet<String>(list);
  if (set.contains("bend"))
  {
    System.out.println("String found!");
  }
6
Marquez

Besser ist es, die match () -Methode für jedes String-Element des Arrays zu verwenden. Dies hilft Ihnen bei der Suche nach Mustern mit regulären Ausdrücken.

2
Drona

Zuerst müssen Sie von AdapterArrayList nach tempsearchnewArrayList kopieren (ListView-Elemente in tempsearchnewArrayList hinzufügen), da nur Sie vergleichen können, ob der Suchtext in Arraylist angezeigt wird oder nicht. 

Fügen Sie nach dem Erstellen einer temporären Arrayliste den folgenden Code hinzu.

    searchEditTextBox.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String txt = charSequence.toString().trim();
            int txtlength = txt.length();
            if (txtlength > 0) {
                AdapterArrayList = new ArrayList<HashMap<String, String>>();
                for (int j = 0; j< tempsearchnewArrayList.size(); j++) {
                    if (tempsearchnewArrayList.get(j).get("type").toLowerCase().contains(txt)) {
                        AdapterArrayList.add(tempsearchnewArrayList.get(j));
                    }
                }
            } else {
                AdapterArrayList = new ArrayList<HashMap<String, String>>();
                AdapterArrayList.addAll(tempsearchnewArrayList);
            }
            adapter1.notifyDataSetChanged();
            if (AdapterArrayList.size() > 0) {
                mainactivitylistview.setAdapter(adapter1);
            } else {
                mainactivitylistview.setAdapter(null);
            }

        }
        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
0
Mani kandan
List <String> list = new ArrayList();  
           list.add("behold"); 
           list.add("bend"); 
           list.add("bet"); 
           list.add("bear"); 
           list.add("beat"); 
           list.add("become"); 
           list.add("begin");

           List <String> listClone = new ArrayList<String>(); 
           Pattern pattern = Pattern.compile("bea",Pattern.CASE_INSENSITIVE); //incase u r not concerned about upper/lower case
           for (String string : list) {
               if(pattern.matcher(string).find()) {
                   listClone.add(string);
                   continue;
               }
           }
        System.out.println(listClone);
0
Rishabh

Die beste Bestellung, die ich je gesehen habe: 

// SearchList is your List  
// TEXT is your Search Text
// SubList is your result

                    ArrayList<String> TempList = new ArrayList<String>(
                            (SearchList));
                    int temp = 0;
                    int num = 0;
                    ArrayList<String> SubList = new ArrayList<String>();
                    while (temp > -1) {
                        temp = TempList.indexOf(new Object() {
                            @Override
                            public boolean equals(Object obj) {
                                return obj.toString().startsWith(TEXT);
                            }
                        });
                        if (temp > -1) {
                         SubList.add(SearchList.get(temp + num++));
                         TempList.remove(temp);
                        }
                    }
0
Hamidreza
import Java.util.*;
class ArrayLst
{
    public static void main(String args[])
    {
        ArrayList<String> ar = new ArrayList<String>();
        ar.add("pulak");
        ar.add("sangeeta");
        ar.add("sumit");
System.out.println("Enter the name:");
Scanner scan=new Scanner(System.in);
String st=scan.nextLine();
for(String lst: ar)
{
if(st.contains(lst))
{
System.out.println(st+"is here!");
break;
}
else
{
System.out.println("OOps search can't find!");
break;
}
}
}
}
0
Pulak