问答详情
源自:6-1 学生选课---判断 List 中课程是否存在

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);

// }

}



}


http://img.mukewang.com/5757f77400012e1512880571.jpg

为什么会出现输入的字符串的第一个字符的拼音?????????????????


提问者:绝壁青松 2016-06-08 18:47

个回答

  • 精慕门7137578
    2016-07-09 08:13:23

    我的出现了整个课程的拼音……

  • mlcoca
    2016-06-09 16:08:20

    不懂 没有遇到过