1、定义一个Student类,具有name、sex、age属性,具有getName、setName、getSex、setSex、
getAge、setAge方法和三个参数的构造方法
2、编写一个类,名字为ListDemo,在main方法中做以下工作:
定义一个可以保存Student类型对象的List类型对象list1,然后向list1中放入2个学生:new Student("张
三",“男”,20)、new Student(“李四”,“男",22)
遍历list1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器
3、定义一个可以保存String类型对象的List类型对象list2,然后向list2中放入2个字符串:"aaa"、"bbb"
遍历list2中的字符串对象,并输出到显示器
4、定义一个Map<String,Student>map=New HashMap<String,Student>();,然后向map中放入2个学
生,<"s1",new Student("王五",“男”,23)>、<"s2",new Student("王六”,“男”,24)>
遍历map中的key和value,并将每个学生的姓名、性别、年龄输出到显示器。
5、定一个Set类型的对象set1,然后向set1中放入2个学生:new Student(“张三”,“男”,20)、new
Student(“李四”,“男",22)。
遍历set1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器。
6、修改Student类,让它实现Comparable<Student>接口(实现Comparable接口的目的是为了让
Student类的对象能够比较大小,即具有比较大小的标准。具体比较标准要通过实现接口中定义的public int
compareTo(Student o)方法来定义。该方法的返回值>0,表示该方法所在的对象大于o对象 ;= 0表示该方法所
在的对象等于o对象 ;< 0表示方法所在的对象小于o对象)。具体要求如下:
这里我们要求根据Student对象的age属性比较大小,age大的对象也大,age小的对象也小。因而该方法中
要根据Student对象的age属性进行比较,如果this.age大于o.age则返回1,如果this.age等于o.age则返回0,
否则返回-1,这样即可实现按照age进行比较大小的功能,并且是age大的对象也大。(如果age是整数的话,
也可以在方法中直接返回this.age-o.age)
反之,如果想让age小的对象大,age大的对象小,则修改该方法的返回值,让this.age大于o.age则返
回-1;如果this.age等于o.age则返回0,否则返回1。(如果age是整数的话,也可以在方法中直接返回o.age-
this.age请同学们好好体会)。
7、定义一个集合List<Student>list3=new ArrayList<Student>();
然后向list3中加入3个Student对象,分别为:
new Student("张三",“男",22);
new Student("李四","男",20);
new Student("王五”,“男”,21);
然后调用Collections类的sort方法将该list3集合排序。
最后遍历输出集合list3中所有对象的姓名。
task1
1、定义一个Student类,具有name、sex、age属性,具有getName、setName、getSex、setSex、
getAge、setAge方法和三个参数的构造方法(√)
package java1;
public class Student {
private String name;
private String sex;
private int age;
public Student(){
}
public Student(String name,String sex,int age){
this.age=age;
this.sex=sex;
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setName(String name){
this.name=name;
}
public String getName() {
return name;
}
public String getSex(){
return sex;
}
public void setSex(String name){
this.sex=sex;
}
}
task2
2、编写一个类,名字为ListDemo,在main方法中做以下工作:
定义一个可以保存Student类型对象的List类型对象list1,然后向list1中放入2个学生:new Student("张
三",“男”,20)、new Student(“李四”,“男",22)
遍历list1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器(√)---10min
package java1;
import java.util.ArrayList;
public class ListDome {
public static void main(String[] args) {
ArrayList<Student> list =new ArrayList<>();
Student s1=new Student("张三 ","男 ",20);
Student s2=new Student("李四 ","男 ",22);
list.add(s1);
list.add(s2);
//list.add(new Student("张 三","男",20)
for (int i = 0; i < list.size(); i++) {
Student stu =list.get(i);
System.out.println(stu.getName()+stu.getSex()+stu.getAge());
}
}
}
task3
3、定义一个可以保存String类型对象的List类型对象list2,然后向list2中放入2个字符串:"aaa"、"bbb"
遍历list2中的字符串对象,并输出到显示器---5min
ArrayList<String> list2=new ArrayList<>();
list2.add("aaa");
list2.add("bbb");
list2.add("ccc");
for (int i = 0; i < list2.size(); i++) {
String str =list2.get(i);
System.out.println(str);
}
task4
4、定义一个Map<String,Student>map=New HashMap<String,Student>();,然后向map中放入2个学
生,<"s1",new Student("王五",“男”,23)>、<"s2",new Student("王六”,“男”,24)>
遍历map中的key和value,并将每个学生的姓名、性别、年龄输出到显示器。---20min
// 3. 定义一个Map<String, Student> map,然后向map中放入2个学生
Map<String, Student> map = new HashMap<>();
map.put("s1", new Student("王五", "男", 23));
map.put("s2", new Student("王六", "男", 24));
for (Map.Entry<String, Student> entry : map.entrySet()) {
String key = entry.getKey();
Student student = entry.getValue();
System.out.println("Key: " + key + ", Student: " + student);
}
* `map.entrySet()`:这个方法返回`map`中所有键值对的集合(`Set<Map.Entry<K,V>>`)。每个键值对都是一个`Map.Entry`对象,它包含了键和值。
* 在循环中,`entry`变量被用来引用集合中的每一个`Map.Entry`对象。
* `entry.getKey()`:用于获取当前`entry`对象的键(在这里是学生的唯一标识符)。
* `entry.getValue()`:用于获取当前`entry`对象的值(在这里是`Student`对象)。
* `System.out.println("Key: " + key + ", Student: " + student);`:将键和值(即学生的唯一标识符和学生的信息)打印到控制台。
task5
5、定一个Set类型的对象set1,然后向set1中放入2个学生:new Student(“张三”,“男”,20)、new
Student(“李四”,“男",22)。
遍历set1中的学生对象,并将每个学生的姓名、性别、年龄输出到显示器。---10min
import java.util.HashSet;
import java.util.Set;
public class SetDemo {
public static void main(String[] args) {
Set<Student> set1 = new HashSet<>();
set1.add(new Student("张三", "男", 20));
set1.add(new Student("李四", "男", 22));
// 由于未重写Student类的equals和hashCode方法,所以即使学生信息相同,也会被认为是不同的对象
// 如果要按学生信息去重,需要重写Student类的equals和hashCode方法
for (Student student : set1) {
System.out.println("姓名: " + student.getName() + ", 性别: " + student.getSex() + ", 年龄: " + student.getAge());
}
}
}
task6
6、修改Student类,让它实现Comparable<Student>接口(实现Comparable接口的目的是为了让
Student类的对象能够比较大小,即具有比较大小的标准。具体比较标准要通过实现接口中定义的public int
compareTo(Student o)方法来定义。该方法的返回值>0,表示该方法所在的对象大于o对象 ;= 0表示该方法所
在的对象等于o对象 ;< 0表示方法所在的对象小于o对象)。具体要求如下:
这里我们要求根据Student对象的age属性比较大小,age大的对象也大,age小的对象也小。因而该方法中
要根据Student对象的age属性进行比较,如果this.age大于o.age则返回1,如果this.age等于o.age则返回0,
否则返回-1,这样即可实现按照age进行比较大小的功能,并且是age大的对象也大。(如果age是整数的话,
也可以在方法中直接返回this.age-o.age)
反之,如果想让age小的对象大,age大的对象小,则修改该方法的返回值,让this.age大于o.age则返
回-1;如果this.age等于o.age则返回0,否则返回1。(如果age是整数的话,也可以在方法中直接返回o.age-
this.age请同学们好好体会)。
public class Student implements Comparable<Student>{
public int compareTo(Student o) {
// 按照age升序排列
// 如果想让age大的对象也大,则返回this.age - o.age
// 如果想让age小的对象大,则返回o.age - this.age
return this.age - o.age;
}
task7
7、定义一个集合List<Student>list3=new ArrayList<Student>();
然后向list3中加入3个Student对象,分别为:
new Student("张三",“男",22);
new Student("李四","男",20);
new Student("王五”,“男”,21);
然后调用Collections类的sort方法将该list3集合排序。
最后遍历输出集合list3中所有对象的姓名。
List<Student> list3 =new ArrayList<Student>();
list3.add(new Student("张三","男",22));
list3.add(new Student("李四","男",20));
list3.add(new Student("王五","男",21));
for (int i = 0; i < list3.size(); i++) {
Student stu1=list3.get(i);
System.out.println(stu1.getName()+stu1.getAge()+stu1.getSex());
}