web-dev-qa-db-fra.com

Comment rechercher une chaîne dans un répertoire

Je souhaite rechercher une chaîne dans un arraylist . Mon ArrayList contient: 

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");

Maintenant je veux rechercher "bea" et il devrait retourner une liste contenant "bear" et "beat". Comment puis-je le mettre en œuvre?

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

Parcourez votre liste et faites un contient ou commence avec.

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

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

Vous pouvez envelopper cela dans une méthode. Le contient vérifie si c'est dans la liste. Vous pouvez également aller pour startswith.

17
Udo Held

De nos jours, Java 8 permet une solution fonctionnelle à une ligne, plus propre, plus rapide et beaucoup plus simple que la solution acceptée:

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

Comme votre liste ne semble pas être triée, vous devez parcourir ses éléments. Appliquez startsWith() ou contains() à chaque élément et stockez les correspondances dans une liste auxiliaire. Renvoyer la liste auxiliaire lorsque vous avez terminé.

8
NPE

Peut-être plus facile en utilisant un Java.util.HashSet. Par exemple:

  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

La meilleure façon consiste à utiliser la méthode matches () sur chaque élément String du tableau. Cela vous aidera à rechercher n’importe quel motif à travers des expressions régulières.

2
Drona

Vous devez d’abord copier, depuis AdapterArrayList vers tempsearchnewArrayList (Ajouter des éléments ListView dans tempsearchnewArrayList), car vous seul pourrez alors comparer le texte de recherche dans Arraylist. 

Après avoir créé une liste temporaire, ajoutez le code ci-dessous.

    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

Le meilleur ordre que j'ai vu: 

// 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