A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:给一个字符串去重,并且不改变元字符串的顺序。{:2_31:}
我的程序是:
public class Test1_TreeSet {

        public static void main(String[] args) {
                String  s ="abcacd";
               
                TreeSet<Character>  ts =  new TreeSet<>(new Comparator<Character>() {//s树形集合,创建comparator匿名内部类
                        public int compare(Character c1,Character c2){
                        return c1.compareTo(c2) == 0?c1.compareTo(c2):1;//两个元素相同时返回0,让其只存一个,当两者不同时返回为1,保证顺序不变
                        }
                });
                char[] arr = s.toCharArray();//将字符串转为字符数组
                for (char c : arr) {//遍历数组,把每一个值存入集合中,得到不重复的集合
                        ts.add(c);
                }
                System.out.println(ts);

              }
}

打印输出结果是:[a, b, c, a, d]

29 个回复

倒序浏览
没人回复
回复 使用道具 举报
我来回复
回复 使用道具 举报
依旧如此
回复 使用道具 举报
set无序的
回复 使用道具 举报
在来一个for(Character  c : ts){
              System.out.println(c);
}
回复 使用道具 举报
爱我中华
回复 使用道具 举报
字符串去除重复字母,并且按照字典顺序输出。不需要传入比较器。直接使用TreeSet集合就可以了。如果实在要用比较器,重写compare方法时,应该是:
[Java] 纯文本查看 复制代码
return o1.compareTo(o2) == 0 ? 0 : o1.compareTo(o2); //o1与o2相等时不添加,不等时就直接按照相比较的结果存入即可。如果写死成1,那也就是说不管o1大还是o2大,都是按照o1在前o2在后的顺序存储

回复 使用道具 举报
回根的落叶 发表于 2016-9-21 17:19
字符串去除重复字母,并且按照字典顺序输出。不需要传入比较器。直接使用TreeSet集合就可以了。如果实在要 ...

比较为何不用 equals?
回复 使用道具 举报
不需要比较器,直接放进去就好了原因是Character已经实现了comparable接口
回复 使用道具 举报
return c1.compareTo(c2) == 0 ? 1 : c1.compareTo(c2);   
回复 使用道具 举报
mqxin 金牌黑马 2016-9-21 22:57:07
12#
用LinkedHashSet能一步到位,去重且不打乱顺序
回复 使用道具 举报
可以了11!
回复 使用道具 举报
[Java] 纯文本查看 复制代码
import java.util.LinkedHashSet;
import java.util.Set;


//需求:给一个字符串去重,并且不改变元字符串的顺序。
//我的程序是:
public class Demo01 {
	public static void main(String[] args) {
		String  s ="abcacd";
                
		Set<Character> s1 = new LinkedHashSet<Character>();
        char[] arr = s.toCharArray();//将字符串转为字符数组
        for (char c : arr) {
			s1.add(c);
		}
        
        System.out.println(s1);
  }
}

//打印输出结果是:[a, b, c, ,d]
回复 使用道具 举报
没看明白?
回复 使用道具 举报
解决了吗?怎么接的呢?
回复 使用道具 举报
解决不了
回复 使用道具 举报
没看懂怎么回事
回复 使用道具 举报
学习学习!
回复 使用道具 举报
一天又一天
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马