求问TreeSet的赋值问题。上面的是类,下面的是主函数?

一个转盘游戏的小程序。
package collection4; //类

public class Gift {
private String name;
private int jifeng;
public Gift(String Name,int Jifeng){ //构造方法给属性赋值
this.name=Name;
this.jifeng=Jifeng;
}
public int random(){ //一个生成随机数的方法
int a=(int) (Math.random()*10);
return a;
}

}
package collection4; //主函数

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

public class Game {
public static void main(String args[]){
Gift gift=new Gift(null, 0); //生成随机数
Scanner in=new Scanner(System.in);
TreeSet<Gift> g=new TreeSet<Gift>();
g.add(new Gift("打波",5)); // 事先输入奖品,出问题的地方
g.add(new Gift("抱抱",4)); //下面也一样
g.add(new Gift("交杯酒",3));
g.add(new Gift("抛媚眼",2));
g.add(new Gift("滚床单",6));
boolean flag=true;
while(flag){
System.out.println("输入选择:1 :查看奖品 2: 开始游戏 3 退出游戏");
char choose=in.next().charAt(0);
switch(choose){
case'1':
Iterator<Gift> a=g.iterator();
while(a.hasNext()){
System.out.println(a.next());
}
break;
case'2':

break;
case'3':
flag=false;
break;
default:
System.out.println("您的输入有误");
}
}

}
}

大话西游666
浏览 133回答 1
1回答

德玛西亚99

TreeSet 是排序的 Set,要求你添加进去的东西本身支持排序,也就是:要么实现了 java.lang.Comparable 接口要么你在创建 TreeSet 时提供一个 java.util.Comparator 来告诉 TreeSet 排序的方法由这个 comparator 来处理。如果你并没有排序的必要的话,可以考虑用 HashSet 之类的,如果你只是希望“有序”而不是“排序”的话,还可以考虑 LinkedHashSet,比如,你希望迭代打印出奖品时显示的顺序跟你把它们添加到集合中的顺序相同时就可以用 LinkedHashSet,这里如果 TreeSet &nbsp;的话它会每次修改时可能重新排序数据来保证数据是有序的,例如假定你的 Gift 排序的依据是 jifeng 值从低到高,那么使用 TreeSet 时将会让对象的积分从低到高 2, 3, 4, 5, 6 输出,但使用 LinkedHashSet 依然会像它原来那样 5, 4, 3, 2, 6 输出。
打开App,查看更多内容
随时随地看视频慕课网APP