JAVA基础13

任务要求:

1.建立一个企鹅类,企鹅有名字(可以自由添加属性)
2.把多个企鹅的信息添加到集合中
3.查看企鹅的数量
4.遍历输出所有企鹅的信息
5.删除集合中索引值是2的企鹅的元素

package Demo4;

import java.util.ArrayList;
import java.util.List;

public class Penguin {
    private String name;
    public Penguin(String name) {
        super();
        this.name = name;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return name;
    }
}
class Test1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Penguin> list = new ArrayList<>();
        Penguin p1 = new Penguin("盼盼");
        Penguin p2 = new Penguin("欢欢");
        Penguin p3 = new Penguin("迎迎");
        list.add(p1);
        list.add(p2);
        list.add(p3);
        System.out.println(list.size());
        list.forEach(System.out::println);
        System.out.println(list.remove(2));
    }
}


任务描述:

定义一个老鼠类,该类有属性名字,爱好,年龄。创建老鼠对象,并初始化,然后把这些老鼠对象添加到一个集合中。
任务要求
1.使用集合添加2只老鼠,:淘淘和杰瑞
2.按照年龄升序排序;(比较器Comparable)
3.再添加一只杰瑞老鼠,不允许此老鼠添加入集合,因为在老鼠王国不允许同名的老鼠,老鼠名相同了会被认为是同一只老鼠。(重写hashCode和equals)
4.使用Iterator显示所有老鼠信息;
5.删除老鼠杰瑞
6.输出集合中有多少只老鼠

package Demo4;

import java.util.LinkedHashSet;
import java.util.Set;

public class Mouse implements Comparable<Mouse>{
    private String name;
    private String hobby;
    private int age;
    public Mouse(String name, String hobby, int age) {
        super();
        this.name = name;
        this.hobby = hobby;
        this.age = age;
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return name+","+hobby+","+age;
    }
    @Override
    public int compareTo(Mouse o) {
        // TODO Auto-generated method stub
        return this.age - o.age;
    }
    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return name.hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
        return this.name .equals(((Mouse)obj).name)?true:false ;
    }
}
class Test2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Set<Mouse> set = new LinkedHashSet<>();
        Mouse taotao = new Mouse("淘淘", "吃米", 1);
        Mouse jerry  = new Mouse("杰瑞", "吃蛋糕", 2);
        set.add(taotao);
        set.add(jerry);
        set.forEach(System.out::println);
        set.add(jerry);
        set.forEach(System.out::println);
        set.remove(jerry);
        System.out.println(set.size());
    }
}


练习一
1.定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的。
2.利用集合的知识对数组进行去重,产生新数组,数组中原来数字的大小顺序不能改变。
3.打印新数组中的内容。

package Demo4;

import java.util.ArrayList;

public class Demo1 {
    public static void main(String[] args) {
        // 定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的
        int[] arr = { 5, 7, 8, 4, 5, 6, 3, 4, 8, 7 };

        // 利用集合的知识对数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序

        // 创建集合对象
        ArrayList<Integer> array = new ArrayList<Integer>();
        // 遍历数组
        for (int in : arr) {
            // 判断集合中是否包含指定元素
            if (!array.contains(in)) {
                array.add(in);
            }
        }
        // 定义新数组
        int[] newArr = new int[array.size()];

        //定义新集合的索引
        int index = 0;
        for (int in : array){
            newArr[index++] = in;
        }

        for(int i = 0;i < newArr.length;i++){
            System.out.println(newArr[i]);
        }
    }
}

练习二
键盘读取一行字符串,去掉其中重复字符, 打印去重后的字符串。
分析:
方法一:使用 List集合 中的ArrayList集合【去重--添加】
方法二:使用 Set集合 中的HashSet集合【直接添加,Set特点无序不重复

package Demo4;

import java.util.HashSet;
import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        // 创建Scanner对象
        Scanner sc = new Scanner(System.in);
        // 提示用户输入
        System.out.println("请输入一行字符串:");
        // 创建HashSet对象
        HashSet<Character> hs = new HashSet<>();
        // 将输入的一整行字符串转换为字符数组
        String line = sc.nextLine();
        char[] charArr = line.toCharArray();
        // 将数组中的所有字符都存储在HashSet集合中,在添加的过程中,HashSet会自动去重
        for (char c : charArr) {// Character c也可以 - 自动装箱
            hs.add(c);
        }
        // 遍历HashSet集合,打印每一个字符
        for (Character c : hs) {// char c也可以 - 自动拆箱
            System.out.println(c);
        }
    }
}


练习三
有如下Student 对象,
 private String name;
private int age;
private int score;
private String classNum;
其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList();

list.add(new Student(“Tom”, 18, 100, “class05”));

list.add(new Student(“Jerry”, 22, 70, “class04”));

list.add(new Student(“Owen”, 25, 90, “class05”));

list.add(new Student(“Jim”, 30,80 , “class05”));

list.add(new Student(“Steve”, 28, 66, “class06”));

list.add(new Student(“Kevin”, 24, 100, “class04”));

在这个list 的基础上,完成下列要求:

1) 计算所有学生的平均年龄

2) 计算各个班级的平均分

package Demo5;

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<Student> list = new ArrayList<>();
        list.add(new Student("Tom", 18, 100,"class05"));

        list.add(new Student("Jerry", 22, 70, "class04"));

        list.add(new Student("Owen", 25, 90, "class05"));

        list.add(new Student("Jim", 30,80 , "class05"));

        list.add(new Student("Steve", 28, 66, "class06"));

        list.add(new Student("Kevin", 24, 100, "class04"));
        int avg = 0;
        int sorcoAvg = 0;
        for (Student i:list
             ) {
            avg+=i.getAge();
            sorcoAvg += i.getScore();
        }
        System.out.println("所有学生的平均年龄:"+avg/list.size());
        System.out.println("各个班级的平均成绩为:"+sorcoAvg/list.size());
    }
}
原文地址:https://www.cnblogs.com/coder-ahao/p/13893773.html