java set 不排序,使用TreeSet进行排序而不向其提供Comparator

我知道java中的 TreeSet 会按升序自动对其元素进行排序,以保证顺序 .

例如,如果我有一个 Date 对象的数组随机,我将其复制到 TreeSet 然后它将以 TreeSet 以排序方式添加 .

但是假设不是一个简单的 Date 对象,我的 ArrayList 是 HashMap ,格式如下 .

arraylist的第一个 Value ,

{mydate = 32156464 , mystring = "abc", mystring2 = "xyz"}

hashmap的arraylist中的第二个值,

{mydate = 64687678 , mystring = "abdc", mystring2 = "xyzzz"}

hashmap的arraylist中的第3个值,

{mydate = 11233678 , mystring = "abxdc", mystring2 = "xyzppzz"}

现在,如果我想基于 mydate 键对这个hashmap的arraylist进行排序,我必须在 TreeSet 实例中创建一个新的比较器,如下所示,

public static Set> mySet = new TreeSet<>(new Comparator>() {

@Override

public int compare(HashMap o1, HashMap o2) {

return ((Date) o2.get(mydate)).compareTo((mydate) o1.get(DATE));

}

});

并且它会按照排序顺序将arraylist存储在 TreeSet 内 . 但我使用自定义 Comparator 来实现这一目标 . 如果我还提供自定义 Comparator ,在这种情况下使用 TreeSet 分类数据有什么意义呢?

如何在不使用 TreeSet 中 Comparator 的新实例的情况下,根据 date 值对 ArrayList ArrayList 进行排序?

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值