##(一)
第一题:
完成下面的要求
- 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200 - 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
- 删除wang5 的信息
- 利用for 循环遍历,打印List 中所有工人的信息
- 利用迭代遍历,对List 中所有的工人调用work 方法。
- 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
第二题:
(Set,Hash 算法)在前面的Worker 类基础上,为Worker 类增加相应的方法,使得Worker
放入HashSet 中时,Set 中没有重复元素(姓名、年龄、工资相同认为是同一个元素)。
并编写相应的测试代码。
public class Worker {
private String name;
private Integer age;
private Integer pay;
public Worker() {
super();
// TODO 自动生成的构造函数存根
}
public Worker(String name, Integer age, Integer pay) {
super();
this.name = name;
this.age = age;
this.pay = pay;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getPay() {
return pay;
}
public void setPay(Integer pay) {
this.pay = pay;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((pay == null) ? 0 : pay.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Worker other = (Worker) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (pay == null) {
if (other.pay != null)
return false;
} else if (!pay.equals(other.pay))
return false;
return true;
}
@Override
public String toString() {
return "Employee [name=" + name + ", age=" + age + ", pay=" + pay + "]";
}
public void work() {
System.out.println(name+"在工作!");
}
}
#题一
public class Test {
public static void main(String[] args) {
ArrayList<Worker> list = new ArrayList<>();
Worker wor1 = new Worker("zhang3", 18, 3000);
Worker wor2 = new Worker("li4", 25, 3500);
Worker wor3 = new Worker("wang5", 22, 3200);
Worker wor4 = new Worker("zhao6", 24, 3300);
list.add(wor1);
list.add(wor2);
list.add(wor3);
list.add(1, wor4); // 插入新元素
list.remove(wor3); // 删除指定元素
// for 循环输出所有员工
for (Worker a : list) {
System.out.println(a);
}
// 利用迭代遍历,对List 中所有的工人调用work 方法
Iterator<Worker> it = list.iterator();
while (it.hasNext()) {
it.next().work();
}
// 为Worker 类重写equals 方法,当姓名、年龄、工资全部相等时候才返回true
Worker wor5 = new Worker("li4", 25, 3500);
boolean x = true;
for (int i = 0; i < list.size(); i++) {
System.out.println(wor5.equals(list.get(i)));
}
}
}
#题二
public class Test1 {
public static void main(String[] args) {
HashSet<Worker> set = new HashSet<>();
Worker wor1 = new Worker("zhang3", 18, 3000);
Worker wor2 = new Worker("li4", 25, 3500);
Worker wor3 = new Worker("wang5", 22, 3200);
Worker wor4 = new Worker("zhao6", 24, 3300);
Worker wor5 = new Worker("wang5", 22, 3200);
Worker wor6 = new Worker("wang", 22, 3200);
set.add(wor1);
set.add(wor2);
set.add(wor3);
set.add(wor4);
set.add(wor5);
System.out.println(set.size() + "个元素");
Iterator<Worker> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}