2017-10-19 121 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 

作品不錯。