#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);
}
}
}