Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同的集合用于不同的数据排序_Java_Sorting_Collections_Jquery Ui Sortable - Fatal编程技术网

Java 不同的集合用于不同的数据排序

Java 不同的集合用于不同的数据排序,java,sorting,collections,jquery-ui-sortable,Java,Sorting,Collections,Jquery Ui Sortable,我有一项任务要处理Java集合框架。我需要从数据库中获取用户列表,并将其存储在集合中。(完成后,用户存储在哈希集中)。每个用户都是Person类的一个实例,用名称、姓氏、出生日期、加入日期和其他一些现在不重要的参数进行描述。接下来,我需要将列表存储在不同的集合中(不知道有多少个集合),以提供排序功能: -仅限姓名 -姓名、姓氏、出生日期 -加入日期 好的,首先,我的人只将数据存储为字符串(我应该将日期更改为日期吗?)。我已经开始使用“按姓名、姓氏、出生日期”实现排序,因为这是我在使用字符串对列表

我有一项任务要处理Java集合框架。我需要从数据库中获取用户列表,并将其存储在集合中。(完成后,用户存储在哈希集中)。每个用户都是Person类的一个实例,用名称、姓氏、出生日期、加入日期和其他一些现在不重要的参数进行描述。接下来,我需要将列表存储在不同的集合中(不知道有多少个集合),以提供排序功能:
-仅限姓名
-姓名、姓氏、出生日期
-加入日期

好的,首先,我的人只将数据存储为字符串(我应该将日期更改为日期吗?)。我已经开始使用“按姓名、姓氏、出生日期”实现排序,因为这是我在使用字符串对列表调用
sort
后得到的结果。我说得对吗

public List createListByName(Set set){
    List ret = new ArrayList<String>();
    String data = "";

    for(Object p: set){
        data = p + "\n";
        ret.add(data);
    }
    Collections.sort(ret);
    return ret;
}

我不会一开始就把所有东西都转换成字符串。我将实现
比较器
,然后对
列表进行排序

是的,我会将出生日期存储为
date
——或者最好存储为
LocalDate
,因为这是一个更好的日期和时间操纵库:)


所以我应该为每个任务在每个人身上编写多个压缩程序

鉴于这是一项家庭作业,那么我想说,这是您开始学习比较器的方式

出于兴趣,只有通过创建两个可恢复的比较器才能做到这一点

可以使用对单个属性进行排序


然后您可以使用对多个属性进行排序。

因此我应该为每个任务在Person上编写多个压缩机?@owca Yes。如果您想要3个列表(或集合),每个列表(或集合)的排序方式不同,那么您可以为每个排序顺序编写一个comperator。@owca:您可以为每个整体排序顺序编写一个comperator,或者为每个属性编写一个comperator,然后再编写一个实用程序类来组合两个comparator以创建一个新的comparator。是的,我从未使用过它们,所以我现在浏览文档。乍一看,我确信Comparator是一个实现Comparable:P的对象
class Person {

    private String firstname;
    private String lastname;
    )..)


    Person(String name, String surname, (..)){
        firstname = name;
        lastname = surname;
        (..)
    }

    @Override
    public String toString(){
        return firstname + " " + lastname + " " + (..);
    }
}
public List<Person> createListByName(Set<Person> set){
    List<Person> ret = new ArrayList<Person>(set);
    Collections.sort(ret, new NameSurnameBirthComparator());
    return ret;
}
public int compare(Person p1, Person p2) {
    // TODO: Consider null checks, and what to do :)
    int firstNameResult = p1.getFirstName().compareTo(p2.getFirstName());
    if (firstNameResult != 0) {
        return firstNameResult;
    }
    int surnameResult = p1.getSurname().compareTo(p2.getSurname());
    if (surnameResult != 0) {
        return surnameResult;
    }
    return p1.getBirthDate().compareTo(p2.getBirthDate());
}