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

Posted

技术标签:

【中文标题】如何根据特定索引范围对 ArrayList<String> 进行排序【英文标题】:How to sort an ArrayList<String> based on specific index range 【发布时间】:2011-11-06 01:14:19 【问题描述】:

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

一种方法我认为我可以从具有所需索引范围的主列表创建一个子列表,对其进行排序并相应地添加子列表。但我的问题是:

是否有任何 API 已经可用?或任何其他更快的方法来实现这一点。

【问题讨论】:

【参考方案1】:

你应该这样做

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

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

【讨论】:

【参考方案2】:

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());

【讨论】:

以上是关于如何根据特定索引范围对 ArrayList<String> 进行排序的主要内容,如果未能解决你的问题,请参考以下文章

ArrayList - 如何检查索引是不是存在?

根据索引 id 的 ArrayList 过滤 JavaRDD

Java ArrayList 在特定索引处替换

Python:根据索引范围将列表拆分为子列表

使用 Worksheet.Range.Autofilter(Field,Criteria,Operator) 按特定颜色索引/RGB 过滤范围

如何根据 array[0] 元素对数组的 ArrayList 进行排序,该元素是以 dd/mm/yyyy 格式给出的日期?