Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 排序多个ArrayList建议?_Java - Fatal编程技术网

Java 排序多个ArrayList建议?

Java 排序多个ArrayList建议?,java,Java,嘿,伙计们 背景: 我正在做一个要求5个名字和5个分数的家庭作业高分项目。输入具有相应分数的名称后,程序将按最高分数对两个ArrayList进行排序。最后,它按排序顺序显示名称及其分数 问题: 我花了很长时间试图对ArrayList进行排序,你对排序ArrayList有什么建议吗 代码: import java.util.*; 公共课堂作业6 { 公共静态void main(字符串参数[]) { ArrayList name=新的ArrayList(); ArrayList分数=新建ArrayL

嘿,伙计们

背景: 我正在做一个要求5个名字和5个分数的家庭作业高分项目。输入具有相应分数的名称后,程序将按最高分数对两个ArrayList进行排序。最后,它按排序顺序显示名称及其分数

问题: 我花了很长时间试图对ArrayList进行排序,你对排序ArrayList有什么建议吗

代码:

import java.util.*;
公共课堂作业6
{
公共静态void main(字符串参数[])
{
ArrayList name=新的ArrayList();
ArrayList分数=新建ArrayList();
姓名首字母缩写(姓名、分数);
//Sortarray(姓名、分数);
显示数组(名称、分数);
}
公共静态void初始值设置arrays(ArrayList名称、ArrayList分数)
{
扫描仪输入=新扫描仪(系统输入);

对于(int i=0;i使用以下字段创建一个对象:
name
score
使用
实现可比较的


然后只使用一个
数组列表
使用
集合。排序(列表);

创建一个具有以下字段的对象:
name
score
,使用
实现可比较的


然后只使用一个
ArrayList
使用
Collections.sort(list);

好的,你想打印这样的
A-{Bob,Alex,…},
其中Bob是一个名称,a是范围,您可以使用Alex描述的一个对象来完成,但如果是家庭作业,我认为您的老师希望看到一些计算机科学数据结构,在这种情况下会更好。您可以自己实现它或使用java实现。java为我们提供地图[T,V],并且实现,对于您的案例是TreeMap,其中T-是范围,V-是名称列表,因为许多人可以拥有相同的范围。 所以,结果结构将是这样的

Map<String, List<String>> sortedScopes = new TreeMap<>();
Map sortedScopes=newtreemap();
并使用:

List<String> names  = sortedScopes.get(scope);
if(names == null){
  names = new ArrayList<>();
sortedScopes.put(scope, names);
}

names.add(name)
List name=sortedScopes.get(范围);
如果(名称==null){
名称=新的ArrayList();
分类镜。放置(范围、名称);
}
名称。添加(名称)

在该解决方案中,只有两个方法初始化和显示,
按范围排序将按需执行

好的,您想打印类似于
A-{Bob,Alex,…},
其中Bob是一个名称,a是范围,您可以使用Alex描述的一个对象来完成,但如果是家庭作业,我认为您的老师希望看到一些计算机科学数据结构,在这种情况下会更好。您可以自己实现它或使用java实现。java为我们提供地图[T,V],并且实现,对于您的案例是TreeMap,其中T-是范围,V-是名称列表,因为许多人可以拥有相同的范围。 所以,结果结构将是这样的

Map<String, List<String>> sortedScopes = new TreeMap<>();
Map sortedScopes=newtreemap();
并使用:

List<String> names  = sortedScopes.get(scope);
if(names == null){
  names = new ArrayList<>();
sortedScopes.put(scope, names);
}

names.add(name)
List name=sortedScopes.get(范围);
如果(名称==null){
名称=新的ArrayList();
分类镜。放置(范围、名称);
}
名称。添加(名称)

在该解决方案中,只有两个方法初始化和显示,
按范围排序将按需执行

您可以将分数和名称包装到一个对象中,并将其存储在列表中

class Result implements Comparable<Result>{

    private String name;

    private int score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public int compareTo(Result other) {
        return this.score - other.score;
    }

}
类结果实现可比较{
私有字符串名称;
个人智力得分;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getScore(){
返回分数;
}
公共核心(整数分数){
这个分数=分数;
}
@凌驾
公共整数比较(结果其他){
返回this.score-other.score;
}
}

现在,您可以使用集合。排序(列表)
根据最高分数对它们进行排序。

您可以将分数和名称包装到一个对象中,并将其存储在列表中

class Result implements Comparable<Result>{

    private String name;

    private int score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public int compareTo(Result other) {
        return this.score - other.score;
    }

}
类结果实现可比较{
私有字符串名称;
个人智力得分;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共整数getScore(){
返回分数;
}
公共核心(整数分数){
这个分数=分数;
}
@凌驾
公共整数比较(结果其他){
返回this.score-other.score;
}
}

现在,您可以使用
Collections.sort(List)
根据最高分数对它们进行排序。

您遇到了哪些问题?Collections.swap()是一个方便实用的工具!但是什么是
a
b
?它们没有在任何地方定义,编译器消息也应该如此。您遇到了什么问题?Collections.swap()是一个方便实用的工具!但是什么是
a
b
?它们没有在任何地方定义,编译器消息也应该这么大。为什么做基本家庭作业的人都要使用Comparable?@clwhisk,因为这是一种更简单、更好的方法。自己排序列表会更简单。一旦你了解了怎么做要比较元素,将代码放在何处并不重要,只需使用它完成排序即可。@clwhisk使用现有的排序方法更简单,而且不浪费时间。通常使用预先存在的排序方法是很好的,但恰恰相反,对于初学者来说是禁止的。为什么做基本作业的人要使用可比较?@clwhisk因为这是一种更简单、更好的方法。自己对列表进行排序更简单。一旦你了解了如何比较元素,不管你把代码放在哪里,你都可以用它来完成排序。@clwhisk使用已经存在的东西更简单,而且不浪费时间。通常使用预先存在的排序方法很好,但恰恰相反,对于初学者家庭作业来说是禁止的。你看到亚历克斯的答案了吗,为什么你要添加副本?@SergiiZagriichuk至少它删除了