List排序的问题
List排序的问题
lgscofield 发表于2年前
List排序的问题
  • 发表于 2年前
  • 阅读 39
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

1.对List进行排序可以通过这种方式,实现(implements) Comparable<T>接口
@Override
    public int compareTo( T  o)
    {
        if (null == o)
        {
            return -1;
        }

        RunningInstancesItemType instance0 = this.instanceInfo;
        RunningInstancesItemType instance1 = o.getInstanceInfo();

        if (null == instance0 || null == instance1)
        {
            return -1;
        }
        else
        {
            // 按运行时间排序
            String launchTime0 = this.getInstanceInfo().getLaunchTime();
            String launchTime1 = o.getInstanceInfo().getLaunchTime();
            if (!launchTime0.equals(launchTime1))
            {
                return launchTime1.compareTo(launchTime0);
            }
            else
            {
                // 如果运行时间相同,则按Id排序
                String instanceId0 = this.getInstanceInfo().getInstanceId();
                String instanceId1 = o.getInstanceInfo().getInstanceId();
                return instanceId0.compareTo(instanceId1);
            }
        }
    }

    @Override
    public boolean equals(Object obj)
    {
        boolean equals;

        if (null == obj)
        {
            equals = false;
        }
        else if (this == obj)
        {
            equals = true;
        }
        else if (this.getClass() != obj.getClass())
        {
            equals = false;
        }
        else
        {
            InstanceBean o = (InstanceBean)obj;
            RunningInstancesItemType instance1 = this.instanceInfo;
            RunningInstancesItemType instance2 = o.getInstanceInfo();

            if (null == instance1 || null == instance2)
            {
                equals = false;
            }
            else
            {
                if (null == instance1.getLaunchTime())
                {
                    equals = false;
                }
                else
                {
                    equals = instance1.getLaunchTime().equals(instance2.getLaunchTime());
                }
            }
        }

        return equals;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((null == this.getInstanceInfo() || null == this.getInstanceInfo().getLaunchTime()) ?
                        0 : this.getInstanceInfo().getLaunchTime().hashCode());
        return result;
    }

2.也可以使用TreesSet实现
SortedSet<T> sortedSet = new TreeSet<T>();
List<T> instanceList;
sortedSet.add(***);//此处*为T的实例化
instanceList = new ArrayList<T>(sortedSet);
标签: List java排序
共有 人打赏支持
lgscofield
粉丝 20
博文 105
码字总数 62676
×
lgscofield
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: