按时间倒序对唯一的字符串列表进行排序

问题描述 投票:0回答:1

我想按时间倒序对唯一的字符串列表进行排序。 使用哪个集合以及实现它的最佳方法

我的索尔恩: 获取列表中的字符串,并创建一个比较器 将列表和此比较器实现类的对象传递给集合排序操作

public class SortStringsReverse {

    public static void main(String[] args) {
        List l = new ArrayList();
        l.add("ABC");
        l.add("ZXY");

        StringComparator comparatorObj = new StringComparator();
        Collections.sort(l, comparatorObj);
        for(Object s: l){
            System.out.println("values are " + (String)s);
        }
    }
}

class StringComparator implements Comparator{

    public int compare(Object arg0, Object arg1) {
        return ((String)arg1).compareTo((String)arg0);//return ((String)arg0).compareTo((String)arg1);
    }

}
java sorting
1个回答
1
投票

既然您指定您想要以 sorted 方式获得 unique 项目,那么在 Java 中,最好的工具是

TreeSet
(尽管任何
SortedSet
实现都可以)。通常,
TreeSet
类按升序存储项目,但幸运的是,我们可以使用自定义
Comparator
对象作为参数来更改它。

根据您的问题,我假设您希望字符串按相反的alphabetical顺序排序,因为时间顺序在这里没有意义,但实际上您可以根据需要实现自己的

Comparator
。现在,您提供的
Comparator
将根据原始 Java 方式对字符串进行排序:字母表中较靠后的字符串将与“更接近”字母表开头的字符串进行比较(例如
"bananas".compareTo("zebra")
将返回正结果,
"zebra".compareTo("bananas")
负数。要反转字母顺序,我们可以使用这种对偶性并反转比较顺序;将第二个参数与第一个参数进行比较,如下所示:

class StringComparator implements Comparator<String>{

    public int compare(String arg0, String arg1) {
        return arg1.compareTo(arg0);
    }

}

现在将该类的对象传递到您的

TreeSet<String>
对象中,您就应该被设置了。

© www.soinside.com 2019 - 2024. All rights reserved.