contains比较
package com.java.lian20166008;
public class Couser {
public int id;
public String name;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result =prime * result +((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Couser))
return false;
Couser other = (Couser) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Couser(int id,String name){
this.id=id;
this.name=name;
}
public Couser(){
}
}
package com.java.lian20166008;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class TestList {
public List<Couser> couser;
private Scanner consle;
public TestList(){
couser=new ArrayList<Couser>();
consle=new Scanner(System.in);
}
public void testAdd(){
/**
* 创建一个课程对象,并通过调用add方法,添加备选课程List中
*/
Couser[] cr3={new Couser(1, "英语"),new Couser(2, "汉语"),
new Couser(3, "日语"),new Couser(4, "法语"),
};
couser.addAll(Arrays.asList(cr3));
}
public void testForeach(){
System.out.println("有如下课程待选(通过for each访问)");
for(Object obj:couser){
Couser cr=(Couser)obj;
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
public void testContains(){
//取得备选课程序列的第0个元素
Couser stu=couser.get(0);
//打印输出couser是否包含stu对象
System.out.println("取得课程:"+stu.name);
/*Contains方法的实现原理,java中所以的类都是继承与Object类。
* Object中定义了一个equals方法,用于检测两个对象是否相等
* 当调用List中的contains方法时,其实就相当于遍历List中的每个元素,
* 调用每个元素的equals方法去跟contains方法中的每个参数进行比较*/
System.out.println("备选课程中是否包含课程 :"+stu.name+","+couser.contains(stu));
//创建一个新的课程对象,ID和名称,与stu对象完全一样
/*Students stu2=new Students(stu.id,stu.name);
System.out.println("新创建课程:"+stu2.name);
System.out.println("备选课程中是否包含课程 :"+stu2.name+","+couser.contains(stu2));*/
/*改写后*/
//提示输入课程名称
System.out.println("请输入课程名称:");
String name=consle.next();
//Students报错:重写一个无参的构造方法
Couser stu2=new Couser();
stu2.name=name;
System.out.println("新创建课程:"+stu2.name);
System.out.println("备选课程中是否包含课程 :"+stu2.name+","+couser.contains(stu2));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestList ct=new TestList();
ct.testAdd();
ct.testForeach();
ct.testContains();
ct.testForeach();
// 创建一个学生对象
// Students student=new Students(1,"叶凡");
// System.out.println("欢迎学生"+student.name+"选课");
// //创建一个Scanner对象,用于接收从键盘输入的Id
// Scanner console=new Scanner(System.in);
// for(int i=0;i<3;i++){
// System.out.println("请输入课程Id:");
// int couserId=console.nextInt();
// for(Couser cr:ct.couser){
// if(cr.id==couserId){
// student.wan.add(cr);
// /*Set中,添加某个对象,无论添加多少次
// 最终只会保留一个该对象(的引用)
// 并且保留的是第一次添加的那一个个*/
// //student.wan.add(cr);
// }
// }
// }
// ct.testFor(student);
// }
// //打印输出学生所选课程
// public void testFor(Student student){
// System.out.println("共选择了"+student.wan.size()+"门课程");
// for(Couser cr:student.wan){
// System.out.println("选择了课程:"+cr.id+cr.name);
// }
}
}
为什么会出现输入的字符串的第一个字符的拼音?????????????????