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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焚雨成灰 中级黑马   /  2014-4-27 15:47  /  964 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 焚雨成灰 于 2014-4-27 22:34 编辑
  1. import java.util.Comparator;
  2. import java.util.Iterator;
  3. import java.util.Set;
  4. import java.util.TreeSet;

  5. /*
  6. * 需求:用TreeSet将这个数组的重复元素去掉{ 8, 9, 8, 7, 6, 6, 4, 4, 3, 8 },并且顺序不能乱
  7. * 我使用了比较器MyComp,如果是重复元素就不存,不是重复元素就存进去,集合内所有元素的顺序是存储顺序
  8. */
  9. public class TreeDemo {
  10.         public static void main(String[] args) {
  11.                 Integer[] array = { 8, 9, 8, 7, 6, 6, 4, 4, 3, 8 };
  12.                 Set<Integer> ts = new TreeSet<Integer>(new MyComp());
  13.                 for (Integer i : array) {
  14.                         ts.add(i);
  15.                 }
  16.                 StringBuilder sb = new StringBuilder("[ ");
  17.                 Iterator<Integer> it = ts.iterator();
  18.                 while (it.hasNext()) {
  19.                         sb.append(it.next() + ", ");
  20.                 }
  21.                 sb.replace(sb.length() - 2, sb.length() - 1, " ]");
  22.                 System.out.println(sb.toString());
  23.                 /*
  24.                  * 结果为[ 8, 9, 7, 6, 4, 3, 8 ] 还有一个重复的
  25.                  */
  26.         }

  27. }

  28. class MyComp implements Comparator<Integer> {
  29.         @Override
  30.         public int compare(Integer o1, Integer o2) {
  31.                 int num = o1.compareTo(o2);               
  32.                 /* 如果不想等就返回1,表示按存放顺序排序 */
  33.                 if (num != 0)
  34.                         return 1;
  35.                 return 0;
  36.         }
  37. }
复制代码

5 个回复

倒序浏览
所以说,老师讲的还不全面
回复 使用道具 举报
threadId阿尔泰无耳兔委托人
回复 使用道具 举报
比老师其实讲了;二叉树先是比较集合中中间值,返回值为1的话在往后比较;由于你的返回值没有-1;就一直是往后面比较;所以后面那个8根本没有和前面的8作比较;所以重复了;
回复 使用道具 举报
a3330682 发表于 2014-4-27 17:48
比老师其实讲了;二叉树先是比较集合中中间值,返回值为1的话在往后比较;由于你的返回值没有-1;就一直是 ...

那你再把视频看一遍
回复 使用道具 举报
关注一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马