按float字段对类对象的ArrayList进行排序

时间:2017-04-21 13:06:11

标签: java

我将Item对象存储在ArrayList中。 Item类有一个名为field1的浮点字段。我想按itemsList的递减顺序从field1检索Item对象。

List<Item> itemsList = new ArrayList<Item>();
itemsList.add(new Item(...));

这就是我的尝试:

public class Item implements Comparable {

    //...

    public float compareTo(Item it)
    {
        return(similarity - it.similarity);
    }
}

List<Item> sortedItems = Collections.sort(itemsList);

问题是compareTo应该返回int,而我float。那么,我应该采用哪种方法来排序float值?

3 个答案:

答案 0 :(得分:1)

方法签名应为:

Add-Type -Language CSharp @"
public class myObject{
    public String myString;
    public hashtable myHash;
}

而不是返回public int compareTo(Item it) 。目前您尚未实施float界面。

最简单的实施方式是:

Comparable

答案 1 :(得分:0)

<?php $pattern = '/<div class="viewBuyButt".*\sonclick="(.*?)">/'; preg_match($pattern, $html, $viewAllLink); var_dump($viewAllLink);// but not getting output 的确切返回值无关紧要。它可以低于0,正好为0或大于0.例如,对于低于0的每个差异,返回-1;对于大于0的每个差异,返回1,最后为0,返回0。

由于campareTo()已经是可比较的,因此很容易:Float

答案 2 :(得分:0)

compareTo假设只返回3个可能的值。 1,0,-1。 1表示对象大于被比较的对象,0表示它们相等,-1表示对象小于它所比较的​​对象。所以你的compareTo方法应该非常简单。

public int compareTo(Item it)
    {
        if(this.field1 < it.getField1()) {
          return -1;
        }
        else if( this.field1 > it.getField1()) {
           return 1;
        }
       else {
       return 0;
      }
    }