任务要求:
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()); } }