сгруппируйте имя строки в arraylist по первой букве android

#android

#Android

Вопрос:

Я хотел бы сгруппировать данные в arraylist по первой букве .. дайте некоторую логику для реализации этого. Я пробовал ниже, как. Я не могу получить точный вывод.

a-америка, Африка, Алварпет, Антарктика. b-Бомбей, Болгария

Мне нужна такая группировка в списке

 ArrayList  allSampleData = new ArrayList<String>();
        data.add("America");
        data.add("Africa");
        data.add("Alwarpet");
        data.add("Antartica");
        data.add("bombay");
        data.add("bulgaria");
        data.add("dutch");
        data.add("delhi");
        data.add("Robert");
        data.add("Robert11");
        data.add("Robert111");
        data.add("Robert112311");
        data.add("zohoooo");

   for (int i = 0; i <data.size(); i  ) {


            if (i==0)
                prevString=data.get(i).charAt(0);
            else
                prevString=data.get(i-1).charAt(0);


            if(prevString.equals(data.get(i).charAt(0))) {

                singleItem.add(data.get(i));
            }
           else
              {

             }
 

Комментарии:

1. попробуйте java.util. Collections.sort(allSampleData)

2. это приведет к сортировке данных по возрастанию … я хочу сгруппировать данные..

3. вы не можете группировать данные в одном списке … создайте хэш-карту с ключом уникальных групп и дочерними элементами той же группы внутри нее

Ответ №1:

Вы можете использовать следующее, чтобы сгруппировать букву по месту и сохранить ее на карте:

         Map<Character,List<String>> letterByCountry = new HashMap<>();

        ArrayList<String> allSampleData = new ArrayList<>();

        for(String p : allSampleData){
            if(!letterByCountry.containsKey(p.charAt(0))){
                letterByCountry.put(p.charAt(0), new ArrayList<String>());
                letterByCountry.get(p.charAt(0)).add(p);
            } else {
                letterByCountry.get(p.charAt(0)).add(p);
            }
        }
 

Ответ №2:

Вы можете использовать эти <a rel=»noreferrer noopener nofollow» href=»https://developer.android.com/reference/java/util/Collections.html#sort(java.util.List)» rel=»nofollow»>коллекции.сортировка по этому:

 Collections.sort(allSampleData);
 

Ответ №3:

Попробуйте следующий код

 String temp=new String();
    ArrayList<String> data=new ArrayList<String>();
     for(int i = 0; i < data.size(); i  )
     {
         for(int j = i   1; j < data.size(); j  )
         {
         if(data.get(i).compareTo(data.get(j)) > 0)
             {
                 temp = data.get(i);
              data.set(i, data.get(j)) ;
              data.set(j, temp);

             }
         }
     }