2017-10-19 58 views
1

我想要在Intellij中生成java equals()和hashcode()方法。我希望它能够生成日食产生的方式。我已经创建了一个自定义模板来执行此操作。但是,在由intellij生成的hashcode方法中,成员按列出的顺序排列,而不是按字母顺序排列。但是eclipse在生成equals和hashcode方法时按字母顺序对它们进行排序。我需要在Intellij中实现这一点。我找不到任何排序功能使用。任何帮助或指针将不胜感激。 谢谢如何在intellij中生成Java的哈希码方法,并对其成员进行排序?

+0

如果您需要此操作,请在IntelliJ中引发错误报告。 –

+1

我真的很好奇你为什么要强制这个? –

+0

在我的项目组中,有些人使用eclipse,大部分代码都是使用eclipse的功能编写的。我最近加入了球队,所以我必须遵循到目前为止的情况。我习惯于Intellij。那么,如果有什么办法可以做到这一点?你认为可以编写一个排序算法(冒泡排序或任何排序)来实现这一点吗? –

回答

3

这一请求已经提交的IntelliJ IDEA,这是declined with the following comment

我们假设你已经在文件中的一个有意义的顺序 订购的成员,并且保持这个命令会更多 比字母排序有意义。

+0

谢谢!你认为可以编写一个排序算法(冒泡排序或任何排序)来实现这一点吗? –

+2

@NagabhushanSN模板基于Velocity语言,应该可以实现排序,[这里是一个例子](https://community.atlassian.com/t5/Answers-Developer-Questions/Sort-List-of-Objects -in-速度/ QAQ-p/539823)。 – CrazyCoder

+0

谢谢你的例子。我会研究它。我发现这[sorttool](https://velocity.apache.org/tools/devel/apidocs/org/apache/velocity/tools/generic/SortTool.html)。 在Intellij Velocity Templates中可以使用它吗? –

1

基于@ CrazyCoder的suggestion,我为intellij开发了一个宏。

#macro(sort $array) 
    #set($size=$array.size()) 
    #set($index1=0) 
    #foreach($element1 in $array) 
    #set($index2=0) 
    #set($minElement=$element1) 
    #set($minElementIndex=$index1) 
    #foreach($element2 in $array) 
     #if($index2>$index1) 
     #if($minElement.name.compareTo($element2.name)>0) 
      #set($minElement=$element2) 
      #set($minElementIndex=$index2) 
     #end 
     #end 
     #set($index2=$index2+1) 
    #end 
    #set($temp=$array.get($index1)) 
    #set($junk=$array.set($index1, $minElement)) 
    #set($junk=$array.set($minElementIndex, $temp)) 
    #set($index1=$index1+1) 
    #end 
#end 

作品不错。

相关问题