通过第一个字母android将字符串名称分组在arraylist中

时间:2016-10-15 08:08:13

标签: android

我想用第一个字母对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
              {

             }

3 个答案:

答案 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);

             }
         }
     }