我知道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 进行排序?