为了账号安全,请及时绑定邮箱和手机立即绑定

通过传递一个字符串并将这个字符串放在最后一个索引处,对 Java List<String> 进行排序

通过传递一个字符串并将这个字符串放在最后一个索引处,对 Java List<String> 进行排序

阿晨1998 2022-01-12 16:53:46
我在列表中的任何位置都有一个字符串,并通过参数传递一个字符串,我需要检查是否有相同的元素,并将其放在列表的末尾,通过重新排序其他元素索引。它会是这样的:初始列表:“A”、“B”、“C”、“D”、“E”输入参数:“B”如果初始列表中有“B”:重新排序初始列表。重新排序的列表:“A”、“E”、“C”、“D”、“B” private void reorderList(List<String> list, String name) {    for (int i = 0; i < list.size(); i++) {        if (list.get(i).equals(name)) {        }    }}我怎样才能做到这一点?
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

不要忘记,它List可能有多个相同的元素。如果是这样,那么所有这些都应该移到最后。


您可以使用它Iterator同时查找和删除所需的元素。之后,只需将所需数量的元素添加到列表的末尾。使用这种方法,您只迭代列表一次,这是O(n)。


private static void reorderList(List<String> list, String name) {

    Iterator<String> it = list.iterator();

    int total = 0;


    while (it.hasNext()) {

        if (name.equals(it.next())) {

            it.remove();

            total++;

        }

    }


    for (int i = 0; i < total; i++)

        list.add(name);

}


查看完整回答
反对 回复 2022-01-12
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

很简单:

  • 首先迭代列表,并检查是否有匹配的索引

  • 如果是这样,请记住该索引并打破循环

  • 那么:使用List.remove(INT)除去该匹配的索引

  • 最后:将您的参数(与删除的字符串匹配!)附加到列表的末尾

诀窍是前面提到的remove()也会将任何后续元素向左移动。


查看完整回答
反对 回复 2022-01-12
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

记得使用提供的工具java.util.List

  • 您可以使用它List.contains(Object)来查找字符串是否存在。

  • 现在,List.indexOf(Object)将它在列表中的索引作为 int 返回。

  • List.remove(int) 将从列表中删除给定的索引。

  • List.add(Object), 将添加到列表的末尾。

只是提示,for如果您使用我刚才提到的功能,则不需要。另外,请记住字符串是对象。


查看完整回答
反对 回复 2022-01-12
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号