为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

大话西游666 2022-03-19 12:08:54
一个转盘游戏的小程序。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("您的输入有误");}}}}
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

TreeSet 是排序的 Set,要求你添加进去的东西本身支持排序,也就是:

  1. 要么实现了 java.lang.Comparable 接口

  2. 要么你在创建 TreeSet 时提供一个 java.util.Comparator 来告诉 TreeSet 排序的方法由这个 comparator 来处理。

如果你并没有排序的必要的话,可以考虑用 HashSet 之类的,如果你只是希望“有序”而不是“排序”的话,还可以考虑 LinkedHashSet,比如,你希望迭代打印出奖品时显示的顺序跟你把它们添加到集合中的顺序相同时就可以用 LinkedHashSet,这里如果 TreeSet  的话它会每次修改时可能重新排序数据来保证数据是有序的,例如假定你的 Gift 排序的依据是 jifeng 值从低到高,那么使用 TreeSet 时将会让对象的积分从低到高 2, 3, 4, 5, 6 输出,但使用 LinkedHashSet 依然会像它原来那样 5, 4, 3, 2, 6 输出。



查看完整回答
反对 回复 2022-03-23
  • 1 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信