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