-------android培训、java培训、期待与您交流! ----------
»知识点总结
1.TreeSet:可以对Set集合中的元素进行排序。
底层数据结构是二叉树。
保证元素唯一性的依据: compareTo方法return 0.
2. TreeSet排序的第一种方式:让元素自身具备比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
也种方式也成为元素的自然顺序,或者叫做默认顺序。
3. TreeSet的第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。
⊙代码练习
public static void main(String[] args)
{
//"90 -7 0 18 2 45 4" 将字符串中的数值进行排序。使用TreeSet完成。
String str = "90 -7 0 18 2 45 4";
String[] ss = str.split(" ");
TreeSet ts6 = new TreeSet();
for(String s : ss)
{
ts6.add(Integer.parseInt(s));
}
String str2 = ts6.toString();
String str3 = str2.replace(",", " ");
//str3= str3.replace((CharSequence) new Regexp("[\\[\\]]"), "");
A.print(str3);
String[] chs = str.split(" ");
TreeSet ts5 = new TreeSet(new Comparator(){
@Override
public int compare(Object o1, Object o2)
{
Integer i1 = new Integer((String)o1);
Integer i2 = new Integer((String)o2);
return i1.compareTo(i2);
}
});
for(String s : chs)
{
ts5.add(s);
}
Object[] strArr = ts5.toArray();
StringBuilder sb = new StringBuilder();
for(int i=0, len=strArr.length; i<len; i++)
{
String str1 = (String) strArr[i];
sb.append(str1);
if(i<len-1)
sb.append(" ");
}
String str2 = sb.toString();
A.print("-"+str2+"-");
//按照字符串长度排序
TreeSet ts4 = new TreeSet(new Comparator(){
@Override
public int compare(Object o1, Object o2)
{
String s1 = (String)o1;
String s2 = (String)o2;
int r = new Integer(s1.length()).compareTo(new Integer(s2.length()));
if(r != 0)
return r;
return s1.compareTo(s2);
}
});
ts4.add("aa");
ts4.add("x");
ts4.add("ab");
ts4.add("bcd");
ts4.add("ac");
A.print(ts4);
//TreeSet ts3 = new TreeSet(new StudentComparator());
TreeSet ts3 = new TreeSet();
ts3.add(new Student("w1", 20));
ts3.add(new Student("w2", 30));
ts3.add(new Student("w3", 20));
//ts3.add(new Student("w2", 20));
A.print(ts3);
TreeSet ts2 = new TreeSet();
ts2.add(new Student("w1", 20));
ts2.add(new Student("w2", 30));
ts2.add(new Student("w3", 40));
ts2.add(new Student("w1", 20));
ts2.add(new Student("w4", 40));
for(Iterator it=ts2.iterator(); it.hasNext();)
{
A.print(it.next());
}
}
}
class StudentComparator implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
Student s1 = (Student)o1;
Student s2 = (Student)o2;
A.print(s1.getName()+"-->"+s2.getName());
int r = s2.getName().compareTo(s1.getName());
if(r!=0)
return r;
return new Integer(s2.getAge()).compareTo(new Integer(s1.getAge()));
}
//不实现总是安全的,提高效率
@Override
public boolean equals(Object obj)
{
// TODO Auto-generated method stub
return super.equals(obj);
}
}
-------
android培训
、
java培训
、期待与您交流! ----------