百木园-与人分享,
就是让自己快乐。

集合框架(Set集合练习)

编写一个程序,获取10个1至20的随机数,要求随机数不能重复。
*
* 分析:
*    A:创建随机数对象
*   B:创建一个HashSet集合
*   C:判断集合的长度是不是小于10
*   是:就创建一个随机数添加
*    否:不搭理它
*   D:遍历HashSet集合
*/

package Day17;

import java.util.HashSet;
import java.util.Random;

//编写一个程序,获取10个1-20的随机数
public class Lx3 {
    public static void main(String[] args) {
        //创建一个随机数对象
        Random AA =new Random();
        //创建一个set集合
        HashSet<Integer> MM = new HashSet<Integer>(); 
        //判断集合长度是否小于10
        while(MM.size()<10){
            //public int nextInt(int n)返回一个伪随机数,
            // 它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值
            //获取1-20之间的随机数--其中随机数的产生包左不包右--所以默认是0-19--所以多加1使其从1-20
            int num = AA.nextInt(20) +1;
            MM.add(num);
        }

        //遍历HashSet集合
        for(Integer e: MM){
            System.out.println(e);
        }
    }
}

 

/*
* 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
*
* 分析:
* A:定义学生类
* B:创建一个TreeSet集合
* C:总分从高到底如何实现呢?
* D:键盘录入5个学生信息
* E:遍历TreeSet集合

学生类

package Day17;
//键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
public class Student3  {
    private String name;
    private int Chinese;
    private int number;
    private int English;

    //构造方法
    public Student3(){}

    public Student3(String name, int chinese, int number, int english) {
        this.name = name;
        Chinese = chinese;
        this.number = number;
        English = english;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChinese() {
        return Chinese;
    }

    public void setChinese(int chinese) {
        Chinese = chinese;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getEnglish() {
        return English;
    }

    public void setEnglish(int english) {
        English = english;
    }

    //给出学生总分---并返回值
    public int show(){
        return this.Chinese+this.number+this.English;
    }
}

 测试类

package Day17;



import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

/*键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
        * 分析:
        *     A:创建一个学生类---用来存储学生的基本信息--实现接口为Comparable
        *     B:创建测试类
        *           A: 创建集合TreeSet保证排序和唯一性
        *           B: 创建学生类对象--将其添加到集合中
        *           C: 使用自然排序---重写Comparable接口下的CompareTo方法
        *           D: 遍历输出即可
 */
public class Lx4 {
    public static void main(String[] args) {
         //创建TreeSet集合
        //TreeSet<Student3> AA = new TreeSet<Student3>();---自然排序
        //new comperator比较器排序
        TreeSet<Student3> AA = new TreeSet<Student3>(new Comparator<Student3>() {
            @Override//重写此方法---传入两个对象
            public int compare(Student3 a , Student3 b ) {
                //将传入的俩个对象数据进行比较--首先比较其总分
                //如果是a-b,则排序是从低到高
                //如果是b-a,则排序是从高到低
                int num = b.show()-a.show();
                //两个对象的数据总分相同比较其语文分值
                int num1 = num==0? b.getChinese()-a.getChinese():num;
                //两个对象的语文分值也相同则比较数学分值
                int num2 = num1==0?b.getNumber()-a.getNumber(): num1;
                //两个对象数学分值也相同则比较英语的分值
                int num3 = num2==0?b.getEnglish()-a.getEnglish():num2;
                //如何如上都相同--则比较其姓名
                int num4 = num3==0?b.getName().compareTo(a.getName()):num3;
                return num4;
            }
            });
          //键盘录入五个学生的信息
          for(int x=1;x<=5;x++){
              //创建键盘输入对象
              Scanner sc = new Scanner(System.in);
              System.out.println(\"请你输入第\"+x+\"个学生的名字\");
              String name = sc.nextLine();
              System.out.println(\"请你输入第\"+x+\"个学生的语文成绩\");
              String Chinese = sc.nextLine();
              System.out.println(\"请你输入第\"+x+\"个学生的数学成绩\");
              String number = sc.nextLine();
              System.out.println(\"请你输入第\"+x+\"个学生的英语成绩\");
              String english= sc.nextLine();

              //创建学生对象并将键盘录入的信息添加到学生类对象中
              Student3 SM = new Student3();
              SM.setName(name);
              //使用Integer类下的parseInt方法
              //public static int parseInt(String s)将字符串参数作为有符号的十进制整数进行解析。转化为int类型的整数
              SM.setChinese(Integer.parseInt(Chinese));
              SM.setNumber(Integer.parseInt(number));
              SM.setEnglish(Integer.parseInt(english));
              //将学生对象的信息添加到集合中
              AA.add(SM);
         }

        //遍历输出此集合
        for(Student3 e: AA){
            System.out.println(e.getName()+\"\\t\"+e.getChinese()+\"\\t\"+e.getNumber()+\"\\t\"+e.getEnglish());
        }
    }
}

 


来源:https://www.cnblogs.com/ztg-java-xuexi/p/16061404.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 集合框架(Set集合练习)

相关推荐

  • 暂无文章