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);
}
这样去重从效率上讲,是低的,因为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));
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。