千锋学习的第25天
四(set list)
import java.util.*
public class TestListSet{
public static void main(String[] args){
List list=new ArrayList();
list.add(“Hello”);
list.add(“Lean”);
list.add(“Hello”);
list.add(“Welcome”);
Set set=new HashSet();
set.addAll(list)
System.out.println(ser.size());
}
}
结果为(D)
A 编译不通过
B编译通过,运行时异常
C 编译运行都正常,输出3
D 编译运行都正常,输出4
六(Set Hash算法)为上提的worker类,在添加完equals方法的基础上添加一个HashCode方法。
public int hashCode(){
//1
}
有几种写法
1、 return 0;
2 int result=0;
if(name!=null)result=namehashCode();
return result+age;
3 return super.hashCode();
现在要把Worker类放入Hashset中,并希望HashSet中没有重复元素,则下面说法正确的是**(B**)
A 三种写法都正确
B 1 2 写法正确,2的写法效率更高
C 2的写法正确1、3的写法都不正确
七(Set,Hash 算法,方法覆盖)代码改错
import java.util.*
class Worker{
String name;
int age;
double salary;
public Worker(){}
public Worker(String name ,int age,double salary){
this.name=name;
this.age=age;
this.salary=salary;
}
int hashCode(){
return name.hashCode()+age+salay;
}
public Boolean equals(Worker w){
if(w.namename&&w.salarysalary&&w.age=age){
return true;
}else{
return false;
}
}
}
public class TestWorker{
public static void main(String[] args){
Set set=new HashSet();
set.add(new Worker(“tom”,18,200));
set.add(new Worker(“tom”,18,200));
set.add(new Worker(“jerry”,18,200));
System.out.println(set.size());
}
}
import java.util.HashSet;
import java.util.Set;
public class TestWorker{
public static void main(String[] args){
Set<Worker> st = new HashSet<Worker>();
set.add(new Worker(“tom”,18,200));
set.add(new Worker(“tom”,18,200));
set.add(new Worker(“jerry”,18,200));
System.out.println(set.size());
}
}
class Worker{
String name;
int age;
double salary;
public Worker(){
}
public Worker(String name ,int age,double salary){
this.name=name;
this.age=age;
this.salary=salary;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return (int) (this.name.hashCode()+age+salary);
}
public boolean equals(Object a) {
// TODO Auto-generated method stu
System.out.println("aasd");
if(this==a) {
return true;
}
if(a==null) {
return false;