我有一个以Person多个属性命名的类,例如:
public class Person {
private int id;
private String name, address;
// Many more properties.
}
Run Code Online (Sandbox Code Playgroud)
很多Person对象存储在一个ArrayList<Person>.我想通过多个排序参数对此列表进行排序,并且不时有所不同.例如,我可能有一次想要按name升序然后address降序排序,而另一次只能通过id降序排序.
而且我不想创建自己的排序方法(即,我想使用Collections.sort(personList, someComparator).实现这一目标的最优雅的解决方案是什么?
我正在开发一个Android聊天应用程序.当我打电话给我的api时,它会返回按user_id排序的聊天列表.但我需要做的是通过message_id序列化,因为我想先显示最后一条消息.这是我的onBindViewHolder方法,其中我得到了值.
public void onBindViewHolder(final MyAdapter_HomeViewHolder holder, final int position) {
holder.userNameTV.setText(data.get(position).getUserInfo().getFullName());
holder.msgBodyTV.setText(data.get(position).getBody());
holder.originator_iD.setText(data.get(position).getUserInfo().getId().toString());
//message ID. I need to serialize my recyclerView by this ID.biggest id should appear first.
holder.messageId.setText(data.get(position).getId().toString());
holder.owner_type_ET.setText("1");
holder.subject_ET.setText("Message");
}
Run Code Online (Sandbox Code Playgroud)
如果您需要查看完整代码,请https://pastebin.com/Zxmq36Gn
你好我想在这样的日期属性返回一个ArrayList的排序答案
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我该如何返回排序后的列表而不是返回整数... 我需要的只是一种方法,我将其传递给列表,然后返回排序后的列表。
就我而言,列表中有很多项目,我不知道是否可以比较所有项目并进行相应排序。
提前致谢。
我想按下降它的第三列对String数组后代进行排序,问题是我想按它的数值排序.
例:
如果我最初有这个数组:
String [][] array = new String[][] {
{"Barcelona", "156", "1604"},
{"Girona", "256", "97"},
{"Tarragona", "91", "132"},
{"Saragossa", "140", "666"}
}
Run Code Online (Sandbox Code Playgroud)
我希望它成为这个:
{
{"Barcelona", "156", "1604"},
{"Saragossa", "140", "666"},
{"Tarragona", "91", "132"},
{"Girona", "256", "97"}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
这是排序之前的样子。书名,年出版
我想按字母顺序对标题进行排序,然后再发布年份。
这是我当前排序之前的编码:
ArrayList BookList = new ArrayList();
BufferedReader br = new BufferedReader (new FileReader ("bookInput.txt"));
String str = br.readLine();
while (str!=null){
StringTokenizer st = new StringTokenizer(str,";");
String title = st.nextToken();
String yr = st.nextToken();
int year = Integer.parseInt(yr);
Book b1 = new Book (title,year);
BookList.add(b1);
str = br.readLine();
}
br.close();
//3(d)
System.out.println("List of Books" + "( " + BookList.size() + " record(s) ) ");
for (int i = 0; i < BookList.size(); i++){
Book b2 = (Book)BookList.get(i);
System.out.println("#" + …Run Code Online (Sandbox Code Playgroud)