【问题标题】:how to sort a list by the second parameter in java?如何在java中按第二个参数对列表进行排序?
【发布时间】:2019-09-27 19:09:09
【问题描述】:

如何对 ParqueDistancia 对象的第二个参数(double)进行排序并在 android studio 中打印?有人可以帮助我吗?

.................................................. ..................................................... .

**********Class FragmentMap*******
ArrayList<ParqueDistancia> listaLocalizacaoParques = new ArrayList<ParqueDistancia>();

ParqueDistancia muma = new ParqueDistancia("A",0.5);
ParqueDistancia artes = new ParqueDistancia("B",60.5);
ParqueDistancia estadio = new ParqueDistancia("B",41.6);

listaLocalizacaoParques.add(muma);
listaLocalizacaoParques.add(artes);
listaLocalizacaoParques.add(estadio);

******************* Object **************************
public class ParqueDistancia { 

    private String nomeParque;
    private Double Distancia;

    public ParqueDistancia(String nomeParque, Double distancia) {
        nomeParque = nomeParque;
        Distancia = distancia;
    }

    public String getNomeParque() {
        return nomeParque;
    }

    public void setNomeParque(String nomeParque) {
        this.nomeParque = nomeParque;
    }

    public Double getDistancia() {
        return Distancia;
    }

    public void setDistancia(Double distancia) {
        Distancia = distancia;
    }
}```

【问题讨论】:

  • 你有没有使用过排序算法,如果没有,我建议你查看“Bubble-Sort”并尝试在这里实现它。

标签: java android list sorting collections


【解决方案1】:

您可以使用列表中的sort 方法并传递基于第二个属性private Double Distancia; 进行比较的比较器

listaLocalizacaoParques.sort(Comparator.comparingDouble(ParqueDistancia::getDistancia));

我有几个建议,第一个总是以小写字母开头的变量名

private Double distancia;

其次,在构造函数中使用this关键字

public ParqueDistancia(String nomeParque, Double distancia) {
    this.nomeParque = nomeParque;
    this.distancia = distancia;
}

【讨论】:

  • listaLocalizacaoParques.sort(Comparator.comparingDouble(ParqueDistancia::getDistancia));不起作用,因为“语言级别'7'不支持方法引用”。如何在android studio中看到有序列表?
【解决方案2】:

覆盖 compareTo 方法

  @Override
public int compareTo(ParqueDistancia obj) {

    /* For Ascending order*/
    return this.Distanscia>obj.getDistansia();

    /* For Descending order do like this */
    //return this.Distanscia<obj.getDistansia();
}

以及您想要排序的位置

       Collections.sort(arraylist);

【讨论】:

  • 我尝试在 ParqueDistancia 中实现方法“compareTo”,@Override 给出错误:“方法没有覆盖其超类中的方法”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 2020-06-27
  • 2012-06-29
相关资源
最近更新 更多