当前位置: 代码迷 >> Eclipse >> java集合学习中一个例子运行有关问题
  详细解决方案

java集合学习中一个例子运行有关问题

热度:92   发布时间:2016-04-23 14:05:45.0
java集合学习中一个例子运行问题,请指教
这是我学习java集合中遇到的一个例子:仿照原题在eclipse中敲出代码,但最后运行出现问题了,代码如下:
Java code
package days03;import java.util.*;public class TreeSetDemo02 implements Comparable {    String name;    long id;    public TreeSetDemo02(String name, long id){        this.id = id;        this.name = name;    }    public int compareTo(Object o) {        TreeSetDemo02 tsd = (TreeSetDemo02) o;        int result = id > tsd.id ? 1 : (id == tsd.id ? 0 : 1);        return result;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public static void main(String[] args){        TreeSetDemo02 tsd1 = new TreeSetDemo02("李同学", 01011);        TreeSetDemo02 tsd2 = new TreeSetDemo02("陈同学", 01021);        TreeSetDemo02 tsd3 = new TreeSetDemo02("王同学", 01051);        TreeSetDemo02 tsd4 = new TreeSetDemo02("马同学", 01012);        TreeSet tree = new TreeSet();        tree.add(tsd1);        tree.add(tsd2);        tree.add(tsd3);        tree.add(tsd4);        Iterator it = tree.iterator();        System.out.println("集合的所有元素:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }        it = tree.headSet(tsd2).iterator();        System.out.println("截取前面tsd2前面的部分集合:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }        it = tree.subSet(tsd2, tsd3).iterator();        System.out.println("截取从tsd2到tsd3之前的部分集合:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }    }    }


------解决方案--------------------
有个小bug,lz按照我的方式改一下
public int compareTo(Object o) {
TreeSetDemo02 tsd = (TreeSetDemo02) o;
int result = id > tsd.id ? 1 : (id == tsd.id ? 0 : -1);
return result;
}

------解决方案--------------------
建议楼主认真看看 java.util.Comparable这个接口,对应的接口方法 compareTo(Object)比较的时候分别返回 正数 0 负数 的意义
Java code
import java.util.*;public class TreeSetDemo02 implements Comparable {    String name;    long id;    public TreeSetDemo02(String name, long id){        this.id = id;        this.name = name;    }    @Override    public int compareTo(Object o) {        TreeSetDemo02 tsd = (TreeSetDemo02) o;        if(id>tsd.id){            return 1;        }else if(id==tsd.id){            return 0;        }else{            return -1;        }//        int result = id > tsd.id ? 1 : (id == tsd.id ? 0 : -1);//        return result;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public static void main(String[] args){        TreeSetDemo02 tsd1 = new TreeSetDemo02("李同学", 01011);        TreeSetDemo02 tsd2 = new TreeSetDemo02("陈同学", 01021);        TreeSetDemo02 tsd3 = new TreeSetDemo02("王同学", 01051);        TreeSetDemo02 tsd4 = new TreeSetDemo02("马同学", 01012);        TreeSet tree = new TreeSet();        tree.add(tsd1);        tree.add(tsd2);        tree.add(tsd3);        tree.add(tsd4);        Iterator it = tree.iterator();        System.out.println("集合的所有元素:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }        it = tree.headSet(tsd2).iterator();        System.out.println("截取前面tsd2前面的部分集合:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }        it = tree.subSet(tsd2, tsd3).iterator();        System.out.println("截取从tsd2到tsd3之前的部分集合:");        while(it.hasNext()){            TreeSetDemo02 tsd0 = (TreeSetDemo02) it.next();            System.out.println(tsd0.getId() + " " + tsd0.getName());        }    }}
  相关解决方案