相关疑难解决方法(0)

如何通过多个字段比较对象

假设您有一些具有多个字段的对象,可以通过以下方式进行比较:

public class Person {

    private String firstName;
    private String lastName;
    private String age;

    /* Constructors */

    /* Methods */

}
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,当你问:

a.compareTo(b) > 0
Run Code Online (Sandbox Code Playgroud)

你可能会问b的姓氏是否在b之前,或者a是否早于b,等等......

在不增加不必要的混乱或开销的情况下,在这些类型的对象之间进行多重比较的最简洁方法是什么?

  • java.lang.Comparable 界面允许仅通过一个字段进行比较
  • 在我看来compareByFirstName(),添加大量的比较方法(例如compareByAge(),等等)是混乱的.

那么最好的方法是什么呢?

java oop

214
推荐指数
12
解决办法
36万
查看次数

对对象集合进行排序

如果我有一个简单的字符串列表:

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接口,但这似乎限制我按一个特定属性对其进行排序.

java sorting collections

60
推荐指数
5
解决办法
7万
查看次数

在Java中使用Comparable实现VO的多个动态字段

我上课了

public class StudentVO {
   int age;
   String name;  
}
Run Code Online (Sandbox Code Playgroud)

我在两个不同的领域使用了同一个班级.在一个地方,我需要根据年龄排序.在另一个地方,我需要根据名称进行排序,在另一个地方,我可能需要根据年龄和名称进行排序.我怎样才能做到这一点?如果我可以覆盖一个字段compareTo().

是否有可能做到这一点?

java comparable comparator

7
推荐指数
2
解决办法
2万
查看次数

一个接一个地按两个实体对对象排序

我有一个包含以下变量(实体)的类:

Identifier  
Entry_Number  
Rest_of_the_data
Run Code Online (Sandbox Code Playgroud)

我想按如下方式对这个类的实例进行排序:
Identifier变量对实例进行Identifier排序,然后对于具有相同值的实例,按变量对它们进行排序Entry_Number.

我知道我可以将这些实体中的一个实现Comparable作为关键,但我不知道如何对这两个实体进行顺序排序.
也就是说,在按Identifier我排序的时间排序之后Entry_Number,不应该干扰初始排序 - 第二次排序应该仅适用于具有相同Identifier值的那些实例.

所以,实际上,我希望能够传递"第二个关键"项来解决关系.

java

2
推荐指数
1
解决办法
115
查看次数

标签 统计

java ×4

collections ×1

comparable ×1

comparator ×1

oop ×1

sorting ×1