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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyw 中级黑马   /  2015-4-14 14:20  /  885 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求: 往TreeSet 集合中存储自定义对象学生要求学生按照年龄排序。
注意: 在主要条件相同的情况下,要判断次要条件。


import java.util.TreeSet;
import java.util.Iterator;



class Student implements Comparable   //定义学生类实现Comparable接口
{
        private String name;
        private int age;
        Student(String name,int age)
        {
                setName(name);
                setAge(age);
        }
       
        public int compareTo(Object obj)   //重写compareTo()方法
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生对象");
                       
                Student s = (Student)obj;
               
                if(this.age>s.age)
                        return 1;
                if(this.age ==s.age)
                        return (this.name.compareTo(s.name));
                return -1;
        }
       
        public  void setName(String name)
        {
                this.name = name;
        }
        public void setAge(int age)
        {
                this.age = age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}


public class TreeSetDemo
{

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();
                ts.add(new Student("xiaoming1",14));
                ts.add(new Student("xiaoming2",12));
                ts.add(new Student("xiaoming3",15));
                ts.add(new Student("xiaoming4",11));
                ts.add(new Student("xiaoming0",11));
                Iterator it = ts.iterator();
       
                while(it.hasNext())
                {
                       
                        Student stu =(Student)it.next();
                        sop(stu.getName()+"---"+stu.getAge());
                }

        }


}




3 个回复

倒序浏览

  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.util.Comparator;
  5. import java.util.TreeSet;

  6. /**
  7. * 6、 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到大排序并打印出来。
  8. *61.54.231.245
  9. *61.54.231.9
  10. *61.54.231.246
  11. *61.54.231.48
  12. *61.53.231.249
  13. * @author danlyalex
  14. *
  15. */
  16. public class Test06 {
  17.         public static void main(String[] args) throws IOException {
  18.                 //将txt中的文件copy到TreeSet集合中来
  19.                 //封装数据源
  20.                 BufferedReader br=new BufferedReader(new FileReader("a.txt"));
  21.                 //封装目的地
  22.                 TreeSet<String> ts=new TreeSet<String>(new Comparator<String>() {

  23.                         @Override
  24.                         public int compare(String s1, String s2) {
  25.                                 String[]datas1=s1.split(".");
  26.                                 String[]datas2=s2.split(".");
  27.                                 int[]arr1=new int[datas1.length];
  28.                                 for(int x=0;x<datas1.length;x++){
  29.                                         arr1[x]=Integer.parseInt(datas1[x]);
  30.                                 }
  31.                                 int[]arr2=new int[datas2.length];
  32.                                 for(int x=0;x<datas2.length;x++){
  33.                                         arr2[x]=Integer.parseInt(datas2[x]);
  34.                                 }
  35.                                 int num=arr2[0]-arr1[0];
  36.                                 int num2=num==0?arr2[1]-arr1[1]:num;
  37.                                 int num3=num2==0?arr2[2]-arr1[2]:num2;
  38.                                 int num4=num3==0?arr2[3]-arr1[3]:num3;
  39.                                 return num4;
  40.                         }
  41.                 });
  42.                 //读写数据,将文本文件中的数据写入到集合中来.
  43.                 String line=null;
  44.                 while((line=br.readLine())!=null){
  45.                         ts.add(line);
  46.                 }
  47.                 //释放资源
  48.                 br.close();
  49.                
  50.                 for (String string : ts) {
  51.                         System.out.println(string);
  52.                 }
  53.         }
  54. }
复制代码
6、 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。

61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249
王兄~!!帮我看看这道题,,如何用 treeSet自定义排序..啊.我写了一段代码死活通不过...
要疯了快..


报错的是
回复 使用道具 举报
danlyalex 发表于 2015-6-10 23:36
6、 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。

61.54.231.245

大哥,别逗我,我要是会就好了,我这些笔记我现在自己都看不懂-。- 这就是连着玩了二十多天英雄联盟的后果。真心不会。

点评

明天来看一遍..敢说不会,,叫小糖糖分分钟来削了你  发表于 2015-6-10 23:56
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马