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

标签 java core

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

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

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中,最好的工具是 TreeSet (尽管任何 SortedSet 实现都可以)。通常,TreeSet类按升序存储项目,但幸运的是我们可以使用自定义 Comparator 来更改它对象作为参数。

根据您的问题,我假设您希望字符串按相反的字母顺序排序,因为时间顺序在这里没有意义,但实际上您可以实现自己的 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> 中对象,你应该被设置。

关于java - 按时间倒序对唯一的字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9902431/

相关文章:

java - Spring Security 角色层次结构@Secured JavaConfig

android - 在 Android 中处理一个核心项目和多个从中派生的项目

java - 使用Selenium等待进度条

java - swing 将数据从 mysql 数据库检索到文本字段

java - 如何在现有的Web 项目中集成Web 服务?

java - java编译器中的常量折叠是什么?

linux - 核心转储文件出现然后消失

java - Java 中的 TODO 列表应该使用哪种设计模式?

java - 通过Windows环境下运行的java程序读取Linux服务器上的文件

java - 如何使用接口(interface)引用保护匿名类的创建