黑马程序员技术交流社区
标题:
你真的了解二叉树吗?
[打印本页]
作者:
焚雨成灰
时间:
2014-4-27 15:47
标题:
你真的了解二叉树吗?
本帖最后由 焚雨成灰 于 2014-4-27 22:34 编辑
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
/*
* 需求:用TreeSet将这个数组的重复元素去掉{ 8, 9, 8, 7, 6, 6, 4, 4, 3, 8 },并且顺序不能乱
* 我使用了比较器MyComp,如果是重复元素就不存,不是重复元素就存进去,集合内所有元素的顺序是存储顺序
*/
public class TreeDemo {
public static void main(String[] args) {
Integer[] array = { 8, 9, 8, 7, 6, 6, 4, 4, 3, 8 };
Set<Integer> ts = new TreeSet<Integer>(new MyComp());
for (Integer i : array) {
ts.add(i);
}
StringBuilder sb = new StringBuilder("[ ");
Iterator<Integer> it = ts.iterator();
while (it.hasNext()) {
sb.append(it.next() + ", ");
}
sb.replace(sb.length() - 2, sb.length() - 1, " ]");
System.out.println(sb.toString());
/*
* 结果为[ 8, 9, 7, 6, 4, 3, 8 ] 还有一个重复的
*/
}
}
class MyComp implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
int num = o1.compareTo(o2);
/* 如果不想等就返回1,表示按存放顺序排序 */
if (num != 0)
return 1;
return 0;
}
}
复制代码
作者:
焚雨成灰
时间:
2014-4-27 16:30
所以说,老师讲的还不全面
作者:
只为你等待
时间:
2014-4-27 16:35
threadId阿尔泰无耳兔委托人
作者:
a3330682
时间:
2014-4-27 17:48
比老师其实讲了;二叉树先是比较集合中中间值,返回值为1的话在往后比较;由于你的返回值没有-1;就一直是往后面比较;所以后面那个8根本没有和前面的8作比较;所以重复了;
作者:
焚雨成灰
时间:
2014-4-27 18:04
a3330682 发表于 2014-4-27 17:48
比老师其实讲了;二叉树先是比较集合中中间值,返回值为1的话在往后比较;由于你的返回值没有-1;就一直是 ...
那你再把视频看一遍
作者:
doyxy
时间:
2014-4-27 19:06
关注一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2