Java-集合题目大全


题目一:需求:使用数组存储3个学生信息,遍历数组获取到每一个学生信息
package com.shujia.wyh.day18;
/*
    需求:使用数组存储3个学生信息,遍历数组获取到每一个学生信息
 */
public class ObjectArrayDemo1 {
    public static void main(String[] args) {
        Student[] arr = new Student[3];
        for(int i=0;i

题目二:集合的嵌套遍历

  • 集合的嵌套遍历:
    现在数加科技共有3个班级十六期,十七期,十八期
    每一期都有不同的学生,十六期有5个学生,十七期有3个学生,十八期有4个学生。
    用集合去存储并且遍历每个学生。
    最终选择ArrayList去存储
package com.shujia.wyh.day20;
import java.util.ArrayList;
/*
        集合的嵌套遍历:
            现在数加科技共有3个班级十六期,十七期,十八期
            每一期都有不同的学生,十六期有5个学生,十七期有3个学生,十八期有4个学生。
            用集合去存储并且遍历每个学生。

        最终选择ArrayList去存储
 */
public class ListTest1 {
    public static void main(String[] args) {
        //创建一个集合代表是数加科技
        ArrayList> shuJia = new ArrayList<>();

        //创建十六期集合对象
        ArrayList sixteenClass = new ArrayList<>();
        //创建十七期集合对象
        ArrayList seventeenClass = new ArrayList<>();
        //创建十八期集合对象
        ArrayList eighteenClass = new ArrayList<>();

        //创建十六期学生对象
        Student s1 = new Student("小张", 17, "十六期");
        Student s2 = new Student("小李", 18, "十六期");
        Student s3 = new Student("小王", 19, "十六期");
        Student s4 = new Student("小赵", 20, "十六期");
        Student s5 = new Student("小刘", 21, "十六期");

        //创建十七期学生对象
        Student ss1 = new Student("张飞", 16, "十七期");
        Student ss2 = new Student("刘备", 17, "十七期");
        Student ss3 = new Student("关羽", 18, "十七期");

        //创建十八期学生对象
        Student sss1 = new Student("唐僧", 19, "十八期");
        Student sss2 = new Student("孙悟空", 20, "十八期");
        Student sss3 = new Student("猪八戒", 18, "十八期");
        Student sss4 = new Student("沙僧", 21, "十八期");

        //将十六期学员添加到十六期集合中
        sixteenClass.add(s1);
        sixteenClass.add(s2);
        sixteenClass.add(s3);
        sixteenClass.add(s4);
        sixteenClass.add(s5);

        //将十七期学员添加到十七期集合中
        seventeenClass.add(ss1);
        seventeenClass.add(ss2);
        seventeenClass.add(ss3);

        //将十八期学员添加到十八期集合中
        eighteenClass.add(sss1);
        eighteenClass.add(sss2);
        eighteenClass.add(sss3);
        eighteenClass.add(sss4);

        //将各期添加到数加集合中
        shuJia.add(sixteenClass);
        shuJia.add(seventeenClass);
        shuJia.add(eighteenClass);

//        System.out.println("数加科技:" + shuJia);

        //遍历集合获取元素并打印
        //使用增强for循环遍历

        for (ArrayList qi : shuJia) {
            System.out.println("当前期的学生如下:");
            for (Student s : qi) {
                System.out.println(s.getName() + "---" + s.getAge() + "---" + s.getClazz());
            }
        }

        //任务:在使用完增强for循环遍历后,尝试使用迭代器遍历
    }
}

题目三: 获取10个1-20之间的随机数,要求不能重复使用集合去存

package com.shujia.wyh.day20;
import java.util.ArrayList;
import java.util.Random;
/*
        获取10个1-20之间的随机数,要求不能重复
        使用集合去存
 */
public class ListTest2 {
    public static void main(String[] args) {
        //创建一个集合对象存储10个不同的数据
        ArrayList list = new ArrayList<>();

        //由于不知道要生成多少次,所以用while循环
        while (list.size() < 10) {
            //生成1-20的随机数
            Random random = new Random();
            int number = (random.nextInt(20) + 1);
            //判断集合中是否包含该元素
            if (!list.contains(number)) { // Integer类中重写了equals方法,所以比较的是内容
                list.add(number);
            }
        }
        System.out.println("最后的集合为:" + list);

    }
}

题目四: 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值集合来使用

/*
        键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
        集合来使用
 */
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class ListTest3 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //创建集合对象
        ArrayList list = new ArrayList<>();

        boolean flag = true;
        while (flag) {
            System.out.println("请输入一个数:(输入0为结束使用)");
            int number = sc.nextInt();
            if (number == 0) {
                flag = false;
                System.out.println("输入完毕,等待输出最大值。。。");
            } else {
                list.add(number);
                System.out.println("数据录入成功!");
            }
        }

        //Object[] toArray()
        //以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。
        Object[] objects = list.toArray();
        //Arrays工具类进行排序
        Arrays.sort(objects);
        System.out.println("最大值为:" + objects[objects.length - 1]);
    }
}

题目五:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台

package com.shujia.wyh.day21;
/*
        键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台
 */
import java.util.Scanner;
import java.util.TreeSet;

public class TreeSetTest1 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //创建一个TreeSet集合对象
        TreeSet set = new TreeSet<>();

        Student student = null;
        //循环添加学生信息
        for (int i = 1; i <= 5; i++) {
            System.out.println("请输入第" + i + "个学生的信息:");
            System.out.println("---------------------------");
            System.out.println("请输入学生的姓名:");
            String name = sc.next();
            System.out.println("请输入学生的语文成绩:");
            int chinese = sc.nextInt();
            System.out.println("请输入学生的数学成绩:");
            int math = sc.nextInt();
            System.out.println("请输入学生的英语成绩:");
            int english = sc.nextInt();

            //创建一个学生对象,将输入的信息赋值给对象的成员变量
            student = new Student();
            student.setName(name);
            student.setChinese(chinese);
            student.setMath(math);
            student.setEnglish(english);

            //将学生对象添加到集合中
            set.add(student);
        }

        System.out.println("===============学生的信息如下======================");
        System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩\t总成绩");
        //遍历集合获取学生的信息:
        for (Student student1 : set) {
            System.out.println(student1.getName() + "\t" + student1.getChinese() + "\t" + student1.getMath()
                    + "\t" + student1.getEnglish() + "\t" + student1.getSumScore());
        }
    }
}

题目六: "aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

package com.shujia.wyh.day21;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

/*
        "aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

       分析:
            1、定义一个字符串(写完之后可以升级成键盘录入)
            2、定义一个TreeMap集合对象(考虑自然还是比较器排序)
                    键:Character
                    值:Integer
            3、将字符串转化成字符数组
            4、遍历字符数组得到每一个字符
            5、拿着这个字符去集合中找,找看看有没有这个字符作为键存在的,看返回值是什么
                是null,说明集合中还没有该字符作为键存在,就把该字符作为键,value设置为1存储
                不是null,说明该键已经存在了,把value取出来,加1,重新存储到集合中。
            6、使用StringBuffer做字符串拼接
            7、遍历集合,获取到键和值,按照对应的输出格式进行输出
            8、将StringBuffer转成String输出

      输入:"aababcabcdabcde"
      输出:a(5)b(4)c(3)d(2)e(1)
 */
import java.util.Scanner;
public class TreeMapTest1 {
    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        //1、定义一个字符串(写完之后可以升级成键盘录入)
//        String s = "aababcabcdabcde";
        System.out.println("请输入要统计的字符串:");
        String s = sc.next();


        //2、定义一个TreeMap集合对象
        TreeMap map = new TreeMap<>();

        //3、将字符串转化成字符数组
        char[] chars = s.toCharArray();

        //4、遍历字符数组得到每一个字符
        for (char c : chars) {
            //5、拿着这个字符去集合中找,找看看有没有这个字符作为键存在的,看返回值是什么
            Integer value = map.get(c);

            //是null,说明集合中还没有该字符作为键存在,就把该字符作为键,value设置为1存储
            if (value == null) {
                map.put(c, 1);
            } else {
                //不是null,说明该键已经存在了,把value取出来,加1,重新存储到集合中。
                value++;
                map.put(c, value);
            }
        }

        //6、使用StringBuffer做字符串拼接
        StringBuffer sb = new StringBuffer();

        //7、遍历集合,获取到键和值,按照对应的输出格式进行输出
        Set> entries = map.entrySet();
        for (Map.Entry keyValue : entries) {
            Character key = keyValue.getKey();
            Integer value = keyValue.getValue();
            sb.append(key).append("(").append(value).append(")");
        }

        //8、将StringBuffer转成String输出
        String result = sb.toString();
        System.out.println("统计的结果为:");
        System.out.println(result);
    }
}