java 中的排序,Java中的排序列表

I need to sort the list in java as below:

List contains collection of objects like this,

List list1 = {obj1, obj2,obj3,.....};

I need the final list which has "lowest value" and "repetition of name should avoid".

Ex:

List list1 = {[Nellai,10],[Gujarath,10],[Delhi,30],[Nellai,5],[Gujarath,15],[Delhi,20]}

After Sorting , I need the list like this :

List list1 = {[Nellai,5],[Gujarath,10],[Delhi,20]};

I have 2 Delhi (30,20) in my list. But I need only one Delhi which has lowest fare (20).

How to do that it in java?

Gnaniyar Zubair

解决方案

Almost the same as @Visage answer, but the order is different:

public class NameFare {

private String name;

private int fare;

public String getName() {

return name;

}

public int getFare() {

return fare;

}

@Override public void equals(Object o) {

if (o == this) {

return true;

} else if (o != null) {

if (getName() != null) {

return getName().equals(o.getName());

} else {

return o.getName() == null;

}

}

return false;

}

}

....

public Collection sortAndMerge(Collection toSort) {

ArrayList sorted = new ArrayList(toSort.size());

for (NameFare nf : toSort) {

int idx = sorted.getIndexOf(nf);

if (idx != -1) {

NameFare old = sorted.get(idx);

if (nf.getFare() < old.getFare()) {

sorted.remove(idx);

sorted.add(nf);

}

}

}

Collections.sort(sorted, new Comparator() {

public int compare(NameFare o1, NameFare o2) {

if (o1 == o2) {

return 0;

} else {

if (o1.getName() != null) {

return o1.getName().compareTo(o2.getName());

} else if (o2.getName() != null) {

return o2.getName().compareTo(o1.getName());

} else {

return 0;

}

}

}

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值