简体   繁体   English

排序列表 - 字符串元素

[英]Sort a list - string element

I have an object list like this:我有一个像这样的 object 列表:

List <myObjectModel> list = new ArrayList ();

myObjectModel is composed of two strings (name and placement) myObjectModel 由两个字符串(名称和位置)组成

In this list there are the following elements in this order:在此列表中,按此顺序包含以下元素:

myObjectModel ("jeans", "B2")

myObjectModel ("jonnhy", "A1")

myObjectModel ("amanda", "H12")

myObjectModel ("samy", "A2")

myObjectModel ("bertrand", "G6")

I would like to sort my list on the second string (A1 jonnhy, A2 samy, B2 jean, G6 bertrand, H12 amanda)我想按第二个字符串(A1 jonnhy、A2 samy、B2 jean、G6 bertrand、H12 amanda)对我的列表进行排序

Is it possible with "sort"? “排序”可以吗?

Thank you谢谢

Using sort method of List:使用 List 的排序方法:

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

Using Java 8 stream API:使用 Java 8 stream API:

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

if you are talking about retrieving the list sorted from the database then use @OrderBy如果您正在谈论检索从数据库中排序的列表,请使用@OrderBy

like this像这样

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

and second_string here is the column name in the table这里的second_string是表中的列名

You can use JAVA Stream API to solve this problem.您可以使用 JAVA Stream API 来解决这个问题。 But i think it is not efficient.但我认为效率不高。 I suggest Comparator method.我建议比较器方法。 I write codes as below,我写代码如下,

Main Method主要方法

 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 Model Class Java Model Class

 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; } }

Comparator Class比较器 Class

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM