黑马程序员技术交流社区
标题:
TreeSet问题
[打印本页]
作者:
xibozglr
时间:
2014-3-26 15:17
标题:
TreeSet问题
import java.util.Comparator;
public class CompartorByLength implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String str1=(String)o1;
String str2=(String)o1;
//比较长度
int tmp=str1.length()-str2.length();
//长度相同,在按字典顺序
return tmp==0?str1.compareTo(str2):tmp;
}
}
复制代码
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
/*练习4:对多个字符串(不重复)按照长度排序(由短到长)
* 思路:
* 1.多个字符串,需要容器存储
* 2.选择哪个容器?字符串是对象,可以选择集合,而且不重复,选择Set集合
* 3.还需要排序,可以选择TreeSet集合
*
*/
sortByLength();
}
public static void sortByLength(){
Set set=new TreeSet(new CompartorByLength());
set.add("abcd");
set.add("nba");
set.add("zz");
set.add("wcba");
set.add("xixixi");
for(Object obj:set){
System.out.println(obj);
}
}
}
复制代码
输出结果怎么只有abcd???求解
作者:
xibozglr
时间:
2014-3-26 15:24
重新写了一下比较器,为什么又正常了??代码没错啊
作者:
透过生活
时间:
2014-3-26 15:39
TreeSet ts = new TreeSet(new Comparator(){
public int compare(Object o1,Object o2)
{
String s1 =(String)o1;
String s2 =(String)o2;
int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(num ==0)
return s1.compareTo(s2);
return num;
}
});
我用的内部类写的 这比较简便。
作者:
焚雨成灰
时间:
2014-3-26 15:56
String str1=(String)o1;
String str2=(String)o1;
复制代码
怎么是两个o1 你太不小心了吧
作者:
MVP
时间:
2014-3-26 17:47
细节问题
作者:
年轻的老头
时间:
2014-3-26 20:54
public V put(K key, V value) { Entry<K,V> t = root; if (t == null) { compare(key, key); // type (and possibly null) check root = new Entry<>(key, value, null); size = 1; modCount++; return null; } 加上String str1=(String)o1;String str2=(String)o1;所以输出结果怎么只有abcd
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2