对一个列表进行排序 – 字符串元素

huangapple 未分类评论42阅读模式
英文:

Sort a list - string element

问题

我有一个如下的对象列表:

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)对列表进行排序。

是否可以使用“sort”来实现?

谢谢

英文:

I have an object list like this:

List &lt;myObjectModel&gt; list = new ArrayList ();

myObjectModel is composed of two strings (name and placement)

In this list there are the following elements in this order:

myObjectModel (&quot;jeans&quot;, &quot;B2&quot;)

myObjectModel (&quot;jonnhy&quot;, &quot;A1&quot;)

myObjectModel (&quot;amanda&quot;, &quot;H12&quot;)

myObjectModel (&quot;samy&quot;, &quot;A2&quot;)

myObjectModel (&quot;bertrand&quot;, &quot;G6&quot;)

I would like to sort my list on the second string (A1 jonnhy, A2 samy, B2 jean, G6 bertrand, H12 amanda)

Is it possible with "sort"?

Thank you

答案1

得分: 0

使用List的sort方法:

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

使用Java 8的Stream API:

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

Using sort method of List:

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

Using Java 8 stream API:

List&lt;MyObjectModel &gt; myObjectModelList = list.stream()
        		  .sorted(Comparator.comparing(MyObjectModel::getProperty2))
        		  .collect(Collectors.toList());

答案2

得分: 0

如果您在谈论从数据库中检索已排序列表,则使用@OrderBy,示例如下:

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

这里的second_string是表中的列名。

英文:

if you are talking about retrieving the list sorted from the database then use
@OrderBy

like this

@OrderBy(&quot;second_string ASC&quot;)
List &lt;myObjectModel&gt; list = new ArrayList ();

and second_string here is the column name in the table

答案3

得分: 0

你可以使用Java Stream API来解决这个问题但我认为这并不高效我建议使用Comparator方法我编写了以下代码

主方法

    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);
        }
        
    }
英文:

You can use JAVA Stream API to solve this problem. But i think it is not efficient. I suggest Comparator method. I write codes as below,

Main Method
<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

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

<!-- end snippet -->

Java Model Class

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

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+&quot;, &quot;+this.placement;
    } 
}

<!-- end snippet -->

Comparator Class

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

import java.util.Comparator;

public class myObjectComparator implements Comparator&lt;myObjectModel&gt;{

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

<!-- end snippet -->

huangapple
  • 本文由 发表于 2020年4月10日 17:26:09
  • 转载请务必保留本文链接:https://java.coder-hub.com/61137419.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定