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_Compare - Fatal编程技术网

Java 在何处/如何实现比较器

Java 在何处/如何实现比较器,java,sorting,compare,Java,Sorting,Compare,我对java还是个新手,在代码组织方面遇到了很多问题。我知道一个类应该包含数据和对这些数据进行操作的方法,但我仍然发现(在我看来)代码应该如何组织的灰色区域 例如,我有Object1,它包含数据和对数据进行操作的方法。Object1包含一个方法,该方法将返回(获取)此类派生的数据的未排序映射。在DifferentObject1类中,我使用Object1中的数据构建该数据的图形。DifferentingObject1需要对接收到的映射中的数据进行排序。映射中的键是字符串,值是浮点数 我的目标是根据

我对java还是个新手,在代码组织方面遇到了很多问题。我知道一个类应该包含数据和对这些数据进行操作的方法,但我仍然发现(在我看来)代码应该如何组织的灰色区域

例如,我有Object1,它包含数据和对数据进行操作的方法。Object1包含一个方法,该方法将返回(获取)此类派生的数据的未排序映射。在DifferentObject1类中,我使用Object1中的数据构建该数据的图形。DifferentingObject1需要对接收到的映射中的数据进行排序。映射中的键是字符串,值是浮点数

我的目标是根据浮点值将地图从最大到最小排序。就代码的组织而言,这些数据的排序应该发生在哪里?现在,_myData变量是一个未排序的数据映射。另外,在类上实现Comparator是对映射进行排序的最佳方法吗

以下是一些帮助您可视化的代码:

public class Object1
{
   private Map<String, float> _myData = new HashMap<String, float>();

   public Object1
   { 
       *do stuff....*
   }

   public Map<String, float> getMyData() { return _myData; }
}

public class DifferentObject1
{
    public DifferentObject1(Object1 obj1)
    {
        *do stuff with obj1*
    }
}
公共类Object1
{
私有映射_myData=newhashmap();
公众反对1
{ 
*做事*
}
公共映射getMyData(){return\u myData;}
}
公共类差异对象1
{
公共差异对象1(对象1对象J1)
{
*用obj1做事*
}
}

因此,基本上,在我的DifferentObject1类使用数据构建图形之后,DifferentObject1类应该显示一个排序后的数据图。

就我所知,Map不适合对值进行排序。TreeMap按键的顺序插入元素,但如果要对值进行排序,则必须首先获取值集合(values()方法),然后将其作为集合进行排序。

适当的设计部分取决于样式,但主要取决于什么是合理的。如果数据排序在逻辑上与数据本身相关联,那么表示数据的类实现
compariable
接口(而且,以始终排序的方式表示数据)是有意义的。如果排序顺序的定义是上下文的(在应用程序中听起来很像),那么定义一个适合上下文的
比较器就更有意义了。

哪个类应该进行排序?需要排序数据的类,还是获取数据的类?需要数据的类(调用getMyData()的类)我没有投你反对票,我也不打算投反对票,但我怀疑这是因为如果你在google中键入“comparator sort java”这个词,我建议你读一下。另外,
Map
s不用于排序。@durron597:TreeMap用于排序;)如果你不理解一个教程,那么问一些具体的问题,关于教程中你不理解的内容。我理解你的困惑,我不是投票反对你的人,但我只是把我的经验传递给你。如果我们看到有人表现出为解决他们的问题付出了很多努力的证据,我们通常会非常积极地回应他们。这意味着展示你的尝试,无论它们有多糟糕,并提供具体证据证明你在来这里之前确实与教程有过斗争。我们中的大多数人都在努力学习这些东西,我们非常尊重那些证明他们也这么做的人。@Ofels,你的评论很有道理。下次我一定会这么做。