03-核心类库—>集合 —>-数据结构训练 作业

在这里插入图片描述

1.

package D03_核心类库_03集合.zy.数据结构训练hjg;

/*1、定义一个方法 listTest(ArrayList<String> list, String name),
        要求返回 name 在 list 里面第一次出 现的索引,如果 name 没出现过返回-1。*/

import java.util.ArrayList;
import java.util.Scanner;

public class Java基础知识List练习作业_01 {
    public static void main(String[] args) {
        ArrayList<String> nameDirectory = new ArrayList<>();
        nameDirectory.add("张三");
        nameDirectory.add("李四");
        nameDirectory.add("王五");
        nameDirectory.add("刘六");

        while(true){
            System.out.println("=======名字检索系统=======");
            Scanner scanner = new Scanner(System.in);
            String input = scanner.nextLine();
            int index = listTest(nameDirectory,input);
            if(index == -1){
                System.out.println(input + "不在该链表中");
            }else{
                System.out.println(input + "的index为" + index);
            }
        }
    }
    public static int listTest(ArrayList<String> list, String name){
        int len = list.size();
        for(int i = 0; i < len; i++){
            if(list.get(i).equals(name)){
                return i;
            }
        }
        return -1;
    }
}

2. set

package D03_核心类库_03集合.zy.数据结构训练hjg;

/*2、已知数组存放一批 QQ 号码,长度 5-11 位,
String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"}。
将该数组里面的所有qq号都存放在 LinkedList 中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来。*/

import java.util.HashSet;
import java.util.Set;

public class Java基础知识List练习作业_02 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>(); // 实例化Set接口对象
        String[] strs = {"10001","10086","12347806666","45612378901","10001","12347806666"};
        for(int i = 0;i<strs.length;i++) {
            set.add(strs[i]);
        }
        //遍历
        for (String name : set) { System.out.print(name+" "); }


    }
}

2.1 LinkedList

package D03_核心类库_03集合.zy.数据结构训练;

import java.util.Iterator;
import java.util.LinkedList;

public class Java基础知识List练习作业_02b {
    public static void main(String[] args) {
        String[] strs = {"10001", "10086", "12347806666", "45612378901", "10001", "12347806666"};
        LinkedList<String> list = getList(strs);
        //增强型for循环
        System.out.println("------增强型for循环------");
        for(String i : list){
            System.out.println(i);
        }
        //迭代器
        System.out.println("---------迭代器---------");
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String s = iterator.next();
            System.out.println(s);
        }
    }

    public static LinkedList<String> getList(String[] strs){
        LinkedList<String> list = new LinkedList<String>();
        for(int i=0; i<strs.length; i++){
            if(list.contains(strs[i])){
                continue;
            }
            list.add(strs[i]);
        }
        return list;
    }
}

3. Set

package D03_核心类库_03集合.zy.数据结构训练hjg;

/*3、请随机生成一注双色球号码。(要求同色号码不重复)。双色球规则:双色球每注投注号码由 6 个红色 球号码和 1 个蓝色球号码组成。
        红色球号码从 1—33 中选择;蓝色球号码从 1—16 中选择;*/

import java.util.HashSet;
import java.util.Set;

public class Java基础知识List练习作业_03 {

    public static void main(String[] args) {
        Set<String> set1 = new HashSet<String>();

        while(set1.size() < 6){
            set1.add((int)(Math.random()*33+1)+" ");
        }

        System.out.println("红色:"+set1+"\n"+"蓝色:"+(int)(Math.random()*16+1));


    }

}


3.1 LinkedList

package D03_核心类库_03集合.zy.数据结构训练;

import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;

public class Java基础知识List练习作业_03b {
    public static void main(String[] args) {
        while(true){
            menu();
        }

    }

    public static int menu(){
        System.out.println("======欢迎来到双色球游戏======");
        System.out.println("请输入相应编号继续游戏:");
        System.out.println("1-开始游戏  2-退出游戏");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        int num = -1;
        try{
            num = Integer.parseInt(input);
        }catch(NumberFormatException e){
            System.out.println("请输入数字");
            return menu();
        }
        if(num < 1 || num > 2){
            System.out.println("请输入正确的数字");
            return menu();
        }

        if(num == 1){
            getball();
        }else{
            System.exit(1);
        }
        return -1;
    }
    public static void getball(){
        System.out.println("正在生成一注双色球号码...");
        System.out.println("生成成功!");
        System.out.println("红色球号码为:");
        LinkedList<Integer> redBall = getRedBall();
        for(Integer i : redBall){
            System.out.print(i);
            System.out.print('\t');
        }
        System.out.println();//换行
        System.out.println("蓝色球号码为:");
        int blueNum = getBlueBall();
        System.out.println(blueNum);
    }
    public static LinkedList<Integer> getRedBall(){
        LinkedList<Integer> red = new LinkedList<>();
        Random random = new Random();
        while(red.size() < 6){
            int code = (int)(1 + Math.random() * 33);
            if(red.contains(code)){
                continue;
            }
            red.push(code);
        }
        return red;
    }

    public static int getBlueBall(){
        Random random = new Random();
        return (int)(1 + Math.random() * 16);
    }

}

4. Comparable Comparator

package D03_核心类库_03集合.zy.数据结构训练hjg;

//4、分别用 Comparable 和 Comparator 两个接口对下列四位同学的成绩做降序排序,
// 如果成绩一样,那在 成绩排序的基础上按照年龄由小到大排序。

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

public class Java基础知识List练习作业_04 {
    public static void main(String[] args) {
        Student s1 = new Student("贾宝玉",14,88.5);
        Student s2 = new Student("林黛玉",13,90.5);
        Student s3 = new Student("史湘云",13,85.5);
        Student s4 = new Student("薛宝钗",15,91.0);
        Student s5 = new Student("工具人",15,88.5);
        ArrayList<Student> studentList = new ArrayList<>();
        studentList.add(s1);
        studentList.add(s2);
        studentList.add(s3);
        studentList.add(s4);
        studentList.add(s5);
        System.out.println("--------comparable实现方法--------");
        System.out.println("原来的顺序");
        for(Student s : studentList){
            System.out.println(s);
        }
        System.out.println("--------------"+'\n' + "现在的顺序:");
        Collections.sort(studentList);
        for(Student s : studentList){
            System.out.println(s);
        }
        System.out.println();
        System.out.println("--------comparator实现方法--------");
        System.out.println("原来的顺序");
        for(Student s : studentList){
            System.out.println(s);
        }
        System.out.println("--------------"+'\n' + "现在的顺序:");
        Collections.sort(studentList,new comparator());
        for(Student s : studentList){
            System.out.println(s);
        }
    }

    static class Student implements Comparable<Student>{
        private String name;
        private int age;
        private double points;

        public Student(String name, int age, double points) {
            this.name = name;
            this.age = age;
            this.points = points;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", points=" + points +
                    '}';
        }

        @Override
        public int compareTo(Student o) {
            if(o.points == this.points){
                return this.age - o.age;
            }
            if(o.points - this.points > 0){
                return 1;
            }else if(o.points - this.points < 0){
                return -1;
            }else{
                return 0;
            }

        }
    }

    static class comparator implements Comparator<Student> {
        @Override
        public int compare(Student o1, Student o2) {
            if(o1.points == o2.points){
                return o1.age - o2.age;
            }
            if(o1.points - o2.points > 0){
                return -1;
            }else if(o1.points - o2.points < 0){
                return 1;
            }else{
                return 0;
            }
        }
    }
}

4.1 LinkedList

package D03_核心类库_03集合.zy.数据结构训练;


//4、分别用 Comparable 和 Comparator 两个接口对下列四位同学的成绩做降序排序,
// 如果成绩一样,那在 成绩排序的基础上按照年龄由小到大排序。 ??????????


import java.util.LinkedList;

public class Java基础知识List练习作业_04 {

    public static void main(String[] args) {
        String[] info = { "贾宝玉 14 88.5f", "林黛玉 13 90.5f", "史湘云 13 85f", "薛宝钗 15 91f" };
        SSSS[] stus = new SSSS[4];
        LinkedList<SSSS> list = new LinkedList<SSSS>();
        for (int i = 0; i < 4; i++) {
            String[] inf = info[i].split(" ");  //分割
            String name = inf[0];
            int age = Integer.parseInt(inf[1]);
            float grade = Float.parseFloat(inf[2]);

            stus[i] = new SSSS(name, age, grade);
            list.add(stus[i]);
        }

        System.out.println("原信息:");
        for (SSSS stu : list)
            stu.printy();

        sort(list);

        System.out.println("排序后:");
        for (SSSS stu : list)
            stu.printy();
    }

    private static void sort(LinkedList<SSSS> list) {
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = 0; j < list.size() - 1 - i; j++) {
                float flag = list.get(j).grade - (list.get(j + 1).grade);
                if (flag < 0) {
                    SSSS temp = list.get(j + 1);  //完成替换
                    list.set(j + 1, list.get(j));
                    list.set(j, temp);

                } else if (flag == 0) {
                    boolean nf = list.get(j).age > (list.get(j + 1).age);
                    if (nf) {

                        SSSS temp1 = list.get(j + 1);
                        list.set(j + 1, list.get(j));
                        list.set(j, temp1);
                    }
                }
            }
        }
    }

}

class SSSS {
    String name;
    int age;
    float grade;

    public SSSS(String name, int age, float grade) {
        super();
        this.name = name;
        this.age = age;
        this.grade = grade;
    }

    public void printy() {
        System.out.println("姓名:" + name + "\t年龄: " + age + "\t成绩: \t" + grade);
    }
}

笔记 而已,

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高高飞起的勇敢麦当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值