如何根据特定索引范围</string>对ArrayList <string>进行排序

时间:2011-08-29 13:38:18

标签: java sorting arraylist

我需要根据特定的索引范围对字符串的ArrayList进行排序。例如,我在列表中有以下项目:["abc", "xyz", "pqr" , "asd"]现在我想从索引1到最后一个索引对此列表进行排序。

单向我认为我可以从主列表中创建具有所需索引范围的子列表,对其进行排序并相应地添加子列表。但我的问题是,有没有可用的API?或任何其他更快的方法来实现这一目标。

此致

阿南德

2 个答案:

答案 0 :(得分:22)

你应该做

Collections.sort(yourList.subList(1, yourList.size()));

由于List.subList方法返回列表的视图Collections.sort所做的修改也会影响支持列表。

答案 1 :(得分:0)

DetailsVOTemp模型具有时间并添加set-get方法 并且我已经有一个列表,该列表是列表的名称 从列表中获取时间和经度,然后存储在丝束ArrayList中,而不是最终对其进行排序

    List< DetailsVOTemp> firstlist = new ArrayList<>();
    List<DetailsVOTemp> secondlisr = new ArrayList<>();

    for (int i = 0; i < list.size(); i++) {
         DetailsVOTemp mDetailsVOTemp = new  DetailsVOTemp();
        mDetailsVOTemp.setTime(list.get(i).getTime());
        mDetailsVOTemp.setAdd(list.get(i).getLatLong());
        mVoTemps.add(mDetailsVOTemp);
    }
    for (int i = 0; i < list.size(); i++) {
        DetailsVOTemp mDetailsVOTemp = new  DetailsVOTemp();
        mDetailsVOTemp.setTime(list.get(i).getDropOffTime());
        mDetailsVOTemp.setAdd(list.get(i).getDropLatLong());
        mVoTemps1.add(mDetailsVOTemp);
    }

    mVoTemps.addAll(mVoTemps1);
    Collections.sort(mVoTemps, new Comparator<DetailsVOTemp>() {

        @Override
        public int compare(DetailsVOTemp o1, DetailsVOTemp o2) {
            return o1.getTime().compareTo(o2.getTime());
        }
    });

    StringBuilder mBuilder = new StringBuilder();
    StringBuilder mBuilder1 = new StringBuilder();
    for (int i = 0; i < mVoTemps.size(); i++) {
        mBuilder1.append(mVoTemps.get(i).getTime() +" :: ");
        mBuilder.append(mVoTemps.get(i).getAdd() +" :: ");
    }

    Log.d("Time : ", mBuilder1.toString());
    Log.d("Address : ", mBuilder.toString());