【问题标题】:Sort a list - string element排序列表 - 字符串元素
【发布时间】:2020-07-23 00:47:25
【问题描述】:

我有一个像这样的对象列表:

List <myObjectModel> list = new ArrayList ();

myObjectModel 由两个字符串(名称和位置)组成

在此列表中,以下元素按此顺序排列:

myObjectModel ("jeans", "B2")

myObjectModel ("jonnhy", "A1")

myObjectModel ("amanda", "H12")

myObjectModel ("samy", "A2")

myObjectModel ("bertrand", "G6")

我想按第二个字符串(A1 jonnhy、A2 samy、B2 jean、G6 bertrand、H12 amanda)对我的列表进行排序

“排序”可以吗?

谢谢

【问题讨论】:

  • 一小时前我回答了非常相似的问题:stackoverflow.com/a/61135759/6068297 只需将类的属性和名称更改为您的即可。还将 更改为您正在使用的类型。希望对你有帮助!
  • 类似myList.sort((model1, model2) -&gt; model1.getSecondString().compareTo(model2.getSecondString()));

标签: java string list sorting


【解决方案1】:

使用List的排序方法:

 myObjectModelList.sort(Comparator.comparing(MyObjectModel::getProperty2));

使用 Java 8 流 API:

List<MyObjectModel > myObjectModelList = list.stream()
                  .sorted(Comparator.comparing(MyObjectModel::getProperty2))
                  .collect(Collectors.toList());

【讨论】:

    【解决方案2】:

    如果您要检索从数据库中排序的列表,请使用 @OrderBy

    喜欢这个

    @OrderBy("second_string ASC")
    List <myObjectModel> list = new ArrayList ();
    

    second_string这里是表中的列名

    【讨论】:

      【解决方案3】:

      您可以使用 JAVA Stream API 来解决这个问题。但我认为效率不高。我建议比较器方法。我写代码如下,

      主要方法

      public static void main(String[] args) {
              List <myObjectModel> list = new ArrayList<> ();
              list.add(new myObjectModel ("jeans", "B2"));
              list.add(new myObjectModel ("jonnhy", "A1"));
              list.add(new myObjectModel ("amanda", "H12"));
              list.add(new myObjectModel ("samy", "A2"));
              list.add(new myObjectModel ("bertrand", "G6"));
              
              list.sort(new myObjectComparator());
              
              System.out.println(list);
          }

      Java 模型类

      public class myObjectModel{
          public String name;
          public String placement;
          
          public myObjectModel(String name, String placement){
              this.name = name;
              this.placement = placement;
          }
      
          @Override
          public String toString() {
              return this.name+", "+this.placement;
          } 
      }

      比较器类

      import java.util.Comparator;
      
      public class myObjectComparator implements Comparator<myObjectModel>{
      
          @Override
          public int compare(myObjectModel o1, myObjectModel o2) {
              return o1.placement.compareTo(o2.placement);
          }
          
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        相关资源
        最近更新 更多