【问题标题】:how to sort array-list based on string value present in it [closed]如何根据其中存在的字符串值对数组列表进行排序[关闭]
【发布时间】:2016-01-09 09:35:46
【问题描述】:

在数组列表中,我有不同的字符串,例如"Home","Work","XYZ","YZX","JDMD",...how 可以将 home 放在上面然后工作然后剩下。有人建议一种方法来做到这一点

【问题讨论】:

  • 你的意思是插入到第一个位置?
  • 您需要将所有值写入新的数组列表中。但是它不能自动执行,您必须检查每个值,如果匹配,请按您想要的顺序将其添加到数组列表中
  • 你可以在我的问题中看到字符串的顺序,这些字符串是随机的,应该类似于上面的顺序。首先定位 HOME,然后在剩下的位置之后工作。

标签: java android sorting arraylist


【解决方案1】:

假设您想按字母顺序对集合进行排序,您可以执行以下操作

List<String> originalList = Arrays.asList("YZW", "Work", "Freetime", "Home", "XZY");
originalList.sort((x,y) -> x.compareTo(y));

您是否应该始终希望 Home 位于开头,然后更改 compareTo 函数以始终首先考虑 Home。

【讨论】:

    【解决方案2】:

    这就是你要找的东西:

    ArrayList list = new ArrayList<>();
    list.add("Home");
    list.add("Work");
    list.add("Freetime");
    list.remove("Work");
    list.add(0, "Work");
    

    很棒的 DevLen_

    【讨论】:

      【解决方案3】:

      如果您不愿意编写自己的排序或创建包装器,您可以执行以下操作

      1. 从列表中删除“家庭”和“工作”
      2. 执行 Collections.sort(list)
      3. 使用 add(int index, E element) 方法在列表开头添加“Home”、“Work”。


      //remove "Home","Work" from 
      list.remove("Home")
      list.remove("Work")
      Collections.sort(list)
      //order of the following two matters
      list.add(0, "Work") 
      list.add(0, "Home")
      

      注意:- 上面代码中使用的 add() 方法需要将列表的元素向右移动。 add(0,obj) 和 remove 的复杂度为 O(n)

      【讨论】:

        【解决方案4】:

        如果您想按排序顺序添加字符串,您可以使用SortedSet。这是一个代码sn -p

        SortedSet<String> set = new TreeSet<>();
        set.add("JDMD");
        set.add("YZX");
        set.add("XYZ");
        set.add("Work");
        set.add("Home");
        
        for(String s : set) {
            System.out.println(s);
        }
        

        这将以排序方式添加每个字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-17
          • 2021-03-15
          相关资源
          最近更新 更多