Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Tuples - Fatal编程技术网

java中元组的计数排序

java中元组的计数排序,java,sorting,tuples,Java,Sorting,Tuples,我正在构建一个具有字符串到整数映射的类。如果我有3个苹果,我会有一个苹果到3的映射 我需要编写一个类,通过减少数字对对象的名称进行排序 所以如果我有 (苹果,3) (橙子,2) (香蕉,5) 我会得到 (香蕉,5),(苹果,3),(橘子2) 我想知道是否已经有一门课程可以让我的生活更轻松,或者我将如何实现这一点 谢谢。你真的想看看 假设计数是唯一的,只需反转元组,将计数存储为键,将水果名称存储为值。TreeMap然后存储按键值升序排序的项目,您可以读回这些值。由于排序是在插入时完成的,因此检索时

我正在构建一个具有字符串到整数映射的类。如果我有3个苹果,我会有一个苹果到3的映射

我需要编写一个类,通过减少数字对对象的名称进行排序

所以如果我有

(苹果,3) (橙子,2) (香蕉,5)

我会得到 (香蕉,5),(苹果,3),(橘子2)

我想知道是否已经有一门课程可以让我的生活更轻松,或者我将如何实现这一点


谢谢。

你真的想看看

假设计数是唯一的,只需反转元组,将计数存储为键,将水果名称存储为值。TreeMap然后存储按键值升序排序的项目,您可以读回这些值。由于排序是在插入时完成的,因此检索时间非常短


如果您有非唯一计数,则有一个可以让您利用树形图的方法。

您应该能够将对象(苹果,3)(桔子,2)(香蕉,5)放入列表,然后调用Collections.sort(您的列表)。然后,您需要确保您声明的对象实现了可比较的接口

有关更多信息,请访问

假设你声明你反对

public class FruitAndCount implements Comparable<FruitAndCount> {
    private final String name;
    private final Integer count;

    public FruitAndCount(String name, int count) {
        this.name = name;
        this.count = count;
    }

    public String name() { return name;  }
    public int count()   { return count; }

    public int compareTo(FruitAndCount o) {
        return this.count.compareTo(o.count);
    }
}
公共类FruitAndCount实现可比较{
私有最终字符串名;
私有最终整数计数;
public fructandcount(字符串名称、整数计数){
this.name=名称;
this.count=计数;
}
公共字符串名称(){return name;}
public int count(){return count;}
公共int比较(结果和计数o){
将此.count.compareTo返回(o.count);
}
}
然后,您应该能够拨打以下电话,对您的列表进行排序:

FruitAndCount fruitArray[] = {
    new FruitAndCount("Apples", 3),
    new FruitAndCount("Oranges", 2),
    new FruitAndCount("Bananas", 5)
};

List<FruitAndCount> fruit = Arrays.asList(fruitArray);
Collections.sort(fruit);
FrootAndCount FrootArray[]={
新水果和计数(“苹果”,3),
新水果和计数(“橙子”,2),
新水果和计数(“香蕉”,5)
};
列表水果=数组.asList(水果数组);
收藏.分类(水果);

然后,您应该有一个水果的排序列表。

能够使类实现
可比较总是很好的,但有时您不能,或者这是不可取的(例如,如果您需要能够根据不同的属性以不同的方式比较同一类型)


在这种情况下,建议使用重载方法,该方法使用
列表
进行排序,并使用a确定对象应如何排序。这比从旧元组中创建新元组要干净得多,并且比实现
Comparable
(这也是一个有效的解决方案)更灵活。

这是家庭作业吗?如果是这样的话,请这样标记。不要将这里的内容与排序算法计数排序混淆。