我见过同时实现Comparable和Comparator的类.这是什么意思?为什么我会使用一个而不是另一个?
我希望为我的地址簿应用程序实现一个排序功能.
我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.
如何编写自定义排序功能来执行此操作?
我发现方法的java.lang.Integer实现compareTo如下:
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
Run Code Online (Sandbox Code Playgroud)
问题是为什么使用比较而不是减法:
return thisVal - anotherVal;
Run Code Online (Sandbox Code Playgroud) 可能重复:
对联系人的ArrayList进行排序
我正在存储DataNode对象ArrayList.该DataNode班有一个名为整型字段degree.我想以DataNode递增的顺序从nodeList 检索对象degree.我该怎么做.
List<DataNode> nodeList = new ArrayList<DataNode>();
Run Code Online (Sandbox Code Playgroud) 如果我有一个简单的字符串列表:
List<String> stringList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
我可以用它来分类:
Collections.sort(stringList);
Run Code Online (Sandbox Code Playgroud)
但是假设我有一个Person类:
public class Person
{
private String name;
private Integer age;
private String country;
}
Run Code Online (Sandbox Code Playgroud)
并列出一个:
List<Person> personList = new ArrayList<Person>();
Run Code Online (Sandbox Code Playgroud)
我希望有时按名字排序,有时按年龄,有时按国家排序.
最简单的方法是什么?
我知道我可以实现Comparable接口,但这似乎限制我按一个特定属性对其进行排序.
这是一个ArrayList的简单排序程序:
ArrayList<String> list = new ArrayList<String>();
list.add("1_Update");
list.add("11_Add");
list.add("12_Delete");
list.add("2_Create");
Collections.sort(list);
for (String str : list) {
System.out.println(str.toString());
}
Run Code Online (Sandbox Code Playgroud)
我期待这个程序的输出为:
1_Update
2_Create
11_Add
12_Delete
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个程序时,我得到输出为:
11_Add
12_Delete
1_Update
2_Create
Run Code Online (Sandbox Code Playgroud)
为什么这样,如何让ArrayList按预期输出显示排序?
我有ArrayList,其中包含足球队(Team Team).团队有积分,我想按点数对它们进行排序.
public class Team {
private int points;
private String name;
public Team(String n)
{
name = n;
}
public int getPoints
{
return points;
}
public void addPoints(boolean win)
{
if (win==true)
{
points = points + 3;
}
else if (win==false)
{
points = points + 1;
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)
主类:
List<Team> lteams = new ArrayList<Team>;
lteams.add(new Team("FC Barcelona"));
lteams.add(new Team("Arsenal FC"));
lteams.add(new Team("Chelsea"));
//then adding 3 points to Chelsea and 1 point to Arsenal
lteams.get(2).addPoints(true); …Run Code Online (Sandbox Code Playgroud) 这是我的json:
[
{"name": "John Smith","date":"2017-02-02T23:07:09Z","id":"1223234"}
{"name": "John Doe","date":"2015-07-03T21:05:10Z","id":"3242342"},
{"name": "Jane Fan","date":"2016-12-22T13:27:19Z","id":"2123444"}
]
Run Code Online (Sandbox Code Playgroud)
我已将上面的内容转换为hashmap.现在我想对日期值进行排序.
是否有内置功能可以帮助我实现这一目标?例如,用Python排序
我需要一些帮助如何排序对象的ArrayList.我有超类帐户和两个子类SavingsAccount和CreditAccount.在Account类中,当我想知道帐号时,我有这个方法来调用:
// Get account number
public String getAccountNumber() {
return accountNumber;
}
Run Code Online (Sandbox Code Playgroud)
我需要对帐号进行排序,以获得对象中所有帐户的最大数量?
ArrayList是这样的:
ArrayList<Account> accountList = new ArrayList<Account>();
Run Code Online (Sandbox Code Playgroud)
这可以用一种简单而不复杂的方式来完成吗?谢谢!
假设我有一个自定义对象的ArrayList,例如
class fileOjb
{
String path;
String format;
int size;
int dateadd;
}
Run Code Online (Sandbox Code Playgroud)
我应该如何对其进行排序 - 路径,格式,大小或日期添加?
谢谢!
java ×10
sorting ×4
arraylist ×3
collections ×3
android ×1
comparable ×1
comparator ×1
comparison ×1
hashmap ×1
integer ×1
optimization ×1
overflow ×1