关于java字符串去重的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于java字符串去重的问题

蛮大人123 2016-03-20 17:17:10 2629

java字符串去重的问题,尝试着用另一种方法TreeSet去做一下,出来的结果确实去重了,但是会按abcd的顺序排列,而不是给定的字符串顺序。问一下怎么纠正?

public void Method_2(String str) {
// 原始输入
System.out.println("原始的字符串:" + str);
long startTime = System.nanoTime();
// 将输入转为字符串数组
String[] array = str.split("");
// 将数组转为TreeSet
Set set = new TreeSet(Arrays.asList(array));
Iterator iterator = set.iterator();
// 遍历TreeSet并输出
System.out.print("去重的字符串:");
while (iterator.hasNext()) {
String result = iterator.next();
System.out.print(result);
}
System.out.println();
// 计算程序运行时间
long endTime = System.nanoTime();
long time = endTime - startTime;
System.out.println("程序执行时间:" + time);
}
Java
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:09:51

    这样去重从效率上讲,是低的,因为TreeSet是用TreeMap来实现的,而TreeMap采用了红黑树-一种二叉排序树。
    当然不考虑效率,一定用TreeSet,可以这么玩:

    Set set = new TreeSet(Arrays.asList(array));
    改成

            Set<String> set = new TreeSet<String>(new Comparator<Object>() {
                @Override
                public int compare(Object o1, Object o2) {
                    if(o1.equals(o2)){
                        return 0;
                    }else{
                        return 1;
                    }               
                }
            });
            set.addAll(Arrays.asList(array));
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程