开发者社区> 问答> 正文

关于java字符串去重的问题

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);
}

展开
收起
蛮大人123 2016-03-20 17:17:10 4657 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    这样去重从效率上讲,是低的,因为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));
    2019-07-17 19:09:51
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载