我想用第一个字母对arraylist中的数据进行分组..给出一些逻辑来实现它。我在下面尝试过。我无法得到准确的输出。
A-美洲,非洲,Alwarpet,南极。 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
{
}
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
你可以使用那个Collections.sort:
Collections.sort(allSampleData);
答案 2 :(得分:0)
尝试以下代码
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);
}
}
}