14.java基础---排序查找算法,Map集合,集合的嵌套 编程题

本文涵盖了Java编程中的多个知识点,包括使用TreeSet实现不同排序需求,Collections的使用,冒泡排序和选择排序算法的实现,字符串中字符计数,HashMap在处理员工工资和学生信息的应用,以及集合的嵌套操作。通过一系列编程题目,深入理解Java中的排序、查找和集合操作。
摘要由CSDN通过智能技术生成

命名要求:
	1. 类名,接口名,枚举名,注解名使用大驼峰
	2. 变量名,方法名,包名均使用小驼峰
	3. 常量名全大写,多个单词下划线分割
	4. 名字要见名知意,如果不知道对应的英文,可以使用拼音代替。不可使用无意义字符
  
代码规范:
	格式要良好,使用IDEA格式化缩进(快捷键:Ctrl+Alt+L)
  
答题规范:
	1. 每道题完整代码请贴入对应题目中的代码区。
    2. 如果有运行结果的,请把代码运行结果放到文档中

【TreeSet】

题目1

需求:

利用TreeSet实现以下需求:

  1. 随机生成10个不同的0~50之间的整数,要求按照从小到大进行遍历。
  2. 随机生成10个不同的50~100之间的整数,要求按照从大到小进行遍历。

思路分析:

TreeSet是具有排序特性的,默认按照自然排序。如果自然排序满足不了需求,可以使用自定义比较器。

需求1,可以使用自然排序实现;需求2可以使用自定义比较器实现

答案:

package com.itheima.homework.test1;

import java.util.Comparator;
import java.util.Random;
import java.util.TreeSet;

/*
    需求:
    利用TreeSet实现以下需求:
        1. 随机生成10个不同的0~50之间的整数,要求按照从小到大进行遍历。
        2. 随机生成10个不同的50~100之间的整数,要求按照从大到小进行遍历。

    思路分析:
    TreeSet是具有排序特性的,默认按照自然排序。如果自然排序满足不了需求,可以使用自定义比较器。
    需求1 : 可以使用自然排序实现;
    需求2 : 可以使用自定义比较器实现

 */
public class Test1 {
   
    public static void main(String[] args) {
   
        TreeSet<Integer> ts = new TreeSet<>();
        Random r = new Random();
        // 1. 随机生成10个不同的0~50之间的整数,要求按照从小到大进行遍历。
        for (int i = 0; i < 10; i++) {
   
            int number = r.nextInt(51);// 0~50之间的整数
            ts.add(number);// 把随机数添加到集合中
        }
        System.out.println(ts);

        System.out.println("========================");

        TreeSet<Integer> ts2 = new TreeSet<>(new Comparator<Integer>() {
   
            @Override
            public int compare(Integer o1, Integer o2) {
   
                return o2 - o1;
            }
        });
        // 2. 随机生成10个不同的50~100之间的整数,要求按照从大到小进行遍历
        // 1. 随机生成10个不同的0~50之间的整数,要求按照从小到大进行遍历。
        for (int i = 0; i < 10; i++) {
   
            int number = r.nextInt(51);// 0~50之间的整数
            ts2.add(number);// 把随机数添加到集合中
        }
        System.out.println(ts2);
    }
}

打印结果:

[1, 4, 7, 10, 19, 28, 31, 47, 48]
========================
[45, 40, 30, 25, 23, 17, 15, 7, 2]

【Collections】

题目2

请定义一个可以存储“整数”的集合,并存储一些数据。

请按以下要求顺序编程实现:

  1. 对集合中的数据打乱顺序;
  2. 打印集合
  3. 对集合中的数据进行升序排序
  4. 打印集合
  5. 对集合中的数据进行降序排序(要实现排序,不可以倒序遍历实现)
  6. 打印集合

答案:

package com.itheima.homework.test2;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
    请定义一个可以存储“整数”的集合,并存储一些数据。

    请按以下要求顺序编程实现:
        1 对集合中的数据打乱顺序;
        2 打印集合
        3 对集合中的数据进行升序排序
        4 打印集合
        5 对集合中的数据进行降序排序(要实现排序,不可以倒序遍历实现)
        6 打印集合


 */
public class Test2 {
   
    public static void main(String[] args) {
   
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(40);

        //  1 对集合中的数据打乱顺序
        Collections.shuffle(list);
        System.out.println(list);

        // 2 对集合中的数据进行升序排序
        Collections.sort(list);
        System.out.println(list);

        // 3 对集合中的数据进行降序排序(要实现排序,不可以倒序遍历实现)
        Collections.sort(list, new Comparator<Integer>() {
   
            @Override
            public int compare(Integer o1, Integer o2) {
   
                return o2 - o1;
            }
        });
        System.out.println(list);
    }
}

打印结果:

[20, 40, 10, 30]
[10, 20, 30, 40]
[40, 30, 20, 10]

【排序,查找】

题目3

编程题【冒泡排序】

请按以下要求顺序编写程序:

  1. 定义测试类,定义main()方法;
  2. 定义以下数组:int[] arr = {1,2,432,32,54,32,3,7,657,563,25,43,6,463,52};
  3. 用Arrays类打印此数组的所有元素;
  4. 用“冒泡排序”对数组元素“升序”排序;打印排序后的数组。

思路:

参考课堂内容

答案:

package com.itheima.homework.test3;

import java.util.Arrays;

/*
    编程题【冒泡排序】
    请按以下要求顺序编写程序:
        1. 定义测试类,定义main()方法;
        2. 定义以下数组:`int[] arr = {1,2,432,32,54,32,3,7,657,563,25,43,6,463,52};`
        3. 用Arrays类打印此数组的所有元素;
        4. 用“冒泡排序”对数组元素“升序”排序;打印排序后的数组。
 */
public class Test3 {
   
    public static void main(String[] args) {
   
        int[] arr = {
   1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值