我希望为我的地址簿应用程序实现一个排序功能.
我想要排序ArrayList<Contact> contactArray.Contact是一个包含四个字段的类:姓名,家庭电话号码,手机号码和地址.我想要排序name.
如何编写自定义排序功能来执行此操作?
我有一个对象列表,我需要在一个字段上排序,比如分数.在没有多想的情况下,我编写了一个实现Comparator的新类,它可以执行任务并且可以正常运行.
现在回过头来看,我想知道我是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类.分数是对象将被订购的唯一字段.
我做过什么可以接受的做法?
是正确的方法"首先让类实现Comparable(对于自然顺序),如果需要替代字段比较,那么创建一个实现Comparator的新类"?
如果上面的(2)为真,那么它是否意味着只有在具有类实现Comparable之后才应该实现Comparator?(假设我拥有原始课程).
如果我有一个简单的字符串列表:
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接口,但这似乎限制我按一个特定属性对其进行排序.
我有一个HashMap<Object, Student>对象是学生的ID,而学生是学生的对象.
我如何通过学生名称来求助HashMap student->getName()?
我有一个对象列表,我需要根据其中一个字段的属性进行排序.我听说SortedMap和Comparators是最好的方法.
编辑: 这段代码给我一个错误:
private TreeMap<Ktr> collection = new TreeMap<Ktr>();
Run Code Online (Sandbox Code Playgroud)
(Ktr实施Comparator<Ktr>).Eclipse说它期待类似的东西TreeMap<K, V>,所以我提供的参数数量不正确.
java ×5
collections ×3
sorting ×3
comparator ×2
arraylist ×1
comparable ×1
interface ×1
sortedmap ×1
treemap ×1