上干货~
这道题目是酱紫的.:
2.分析以下需求,并用代码实现:
(1)定义一个Person类型(属性私有、空参有参构造、set、get方法、toString方法),
包含两个属性:姓名(String name)、年龄(int age)
(2)List集合中存储多个Person对象,获取年龄最大的Person对象并打印信息
(3)思路
a.定义一个Person类型的变量, 先记住第一个元素
b.循环遍历集合
c.用每一个元素和变量比较年龄, 如果集合中的元素比变量记住的年龄大
d.用变量记住这个年龄较大的元素
e.返回变量记住的元素
--------------------------------------------------------------------------------------------------------------------手动分割线.
代码区.
测试方法区:
import java.util.ArrayList;
import java.util.List;
import com.heima.bean.Person;
public class HomeWork02 {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
list.add(new Person("赵刚",18));
list.add(new Person("老李",28));
list.add(new Person("柱子",16));
list.add(new Person("坂田",58));
Person p = list.get(0);
for (int i = 0; i <list.size(); i++) {
if (p.getAge()<=list.get(i).getAge()) {
p = list.get(i);
}
}
System.out.println(p);
}
}
----------------------------------------------------------------------------------------------------------------手动分割线
Person类 代码区.
public class Person {
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
-----------------------------------------------------------------------------------------------------------------手动分割线
这道题, 就我给朋友讲题时候的事情我说说吧:
这道题,初看起来很简单
无非就是遍历,然后对比元素
最后在调用Person 类中方法,
但是仔细想想, 其实问题也不少,但是都是 小问题,
比如:
角标问题,循环条件到底写 i<list.size(), 还是i<list.size()-1;
角标问题, 我通过 list.get(i);获取到的当前对象,我怎么去对比,和每个对比人对比.
我们每次对比的时候 list.get(index).xxxxx
其实就是在拿到了 index 角标中对象的 xxxxx方法,
xxxxxx 如果是 getName(); 那么我们就拿到的是name,
同理,如果是getAge(),那就是拿的是他的age,
于是乎,答案就瞬间出来了.
|
|