package 集合的用法;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetText {
List<KeCheng> keChengs;
private Scanner console;
SetText() {
this.keChengs = new ArrayList<KeCheng>();
this.console = new Scanner(System.in);
}
// 添加方法
// 添加备选课程
public void textadd() {
// 1: 创建一个课程对象 并通过调用Add方法 添加到备选课程里面
KeCheng cr1 = new KeCheng("1", "数据结构");
keChengs.add(cr1);
// System.out.println("添加了 一个课程:" + temp1.id + " " + temp1.name);
// 2:
KeCheng cr2 = new KeCheng("2", "C语言");
keChengs.add(0, cr2);
// System.out.println("添加了 一个课程:" + temp2.id + " " + temp2.name);
// 3: 重复添加课程
// keChengs.add(cr1);
// KeCheng temp0 = (KeCheng) keChengs.get(2);
// System.out.println("添加了 一个课程:" + temp0.id + " " + temp0.name);
// 以下方法会抛出数组下标越界异常
/*
* KeCheng cr3 = new KeCheng("3", "高数"); xinxi.add(4, cr3); KeCheng
* temp3 = (KeCheng) xinxi.get(2); System.out.println("添加了 一个课程:" +
* temp3.id + " " + temp3.name);
*/
// 4:
KeCheng[] course = { new KeCheng("3", "离散数学"), new KeCheng("4", "汇编语言") };
// 将course转换成一个实例
keChengs.addAll(Arrays.asList(course));
// 这里是因为下标从0开始的
KeCheng temp3 = (KeCheng) keChengs.get(2);
KeCheng temp4 = (KeCheng) keChengs.get(3);
// System.out.println("添加了 两个课程:" + temp3.id + " " + temp3.name + " " +
// temp4.id + " " + temp4.name);
// 5:
KeCheng[] course2 = { new KeCheng("5", "高等数学"), new KeCheng("6", "大学英语") };
keChengs.addAll(2, Arrays.asList(course2));
KeCheng temp5 = (KeCheng) keChengs.get(2);
KeCheng temp6 = (KeCheng) keChengs.get(3);
// System.out.println("添加了 两个课程:" + temp5.id + " " + temp5.name + " " +
// temp6.id + " " + temp6.name);
}
// 通过for each 方法访问集合元素
public void TextForEach() {
System.out.println("有如下课程待选 通过for each方法访问");
// 便利集合中的每一个元素将它取出来 作为object的一个变量
for (Object obj : keChengs) {
KeCheng cr = (KeCheng) obj;
System.out.println("课程:" + cr.id + " " + cr.name);
}
}
// 测试List的contains的方法
public void TestListContains() {
// 取得备选课程的第0个元素
KeCheng course = keChengs.get(0);
// 打印输出keChengs是否包含course对象
System.out.println("取得课程: " + course.name);
System.out.println("备选课程中是否包含课程: " + course.name + " " + keChengs.contains(course));
// 提示输入课程名称
System.out.println("请输入课程名称: ");
String name = console.next();
// 创建一个新的课程对象 ID和名称 与couse对象完全一样
KeCheng course2 = new KeCheng();
course2.name = name;
System.out.println("新创建的课程: " + course2.name);
System.out.println("备选课程中是否包含课程: " + course2.name + " " + keChengs.contains(course2));
}
/**
* @param args
*/
public static void main(String[] args) {
SetText setText = new SetText();
setText.textadd();
setText.TestListContains();
// setText.TextForEach();
// // 创建新的学生对象
// Student student = new Student("1", "小明");
// System.out.println("欢迎学生: " + student.name + " 选课 ! ! !");
// // 创建一个Scander对象用来接收从键盘输入的课程ID
// Scanner reader = new Scanner(System.in);
//
// for (int i = 0; i < 3; i++) {
// System.out.println("请输入课程ID:");
// String kechengID = reader.next();
// for (KeCheng cr : setText.keChengs) {
// if (cr.id.equals(kechengID)) {
// student.kebiao.add(cr);
//
// // Set 添加对象 无论添加多少次 最终只会保留一个该对象(的引用)并且保留的是第一次添加的那个
// // student.kebiao.add(cr);
//
// // set可以添加一个空的
// student.kebiao.add(null);
// }
// }
// }
//
// ShuChu(student);
}
// 打印输出 学生选择的课程
public static void ShuChu(Student student) {
System.out.println("共选择了" + student.kebiao.size() + "门课程");
for (KeCheng cr : student.kebiao) {
System.out.println("选择了课程" + cr.id + " " + cr.name);
}
}
}
package 集合的用法;
//课程类
public class KeCheng {
String id;
String name;
KeCheng() {
}
KeCheng(String id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
KeCheng other = (KeCheng) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
package 集合的用法;
import java.util.HashSet;
import java.util.Set;
//学生类
public class Student {
public String id;
public String name;
public Set<KeCheng> kebiao;
Student(String id, String name) {
this.id = id;
this.name = name;
this.kebiao = new HashSet<KeCheng>();
}
}
你重写的equals方法 有问题
// if (id == null) { // if (other.id != null) // return false; // } else if (!id.equals(other.id)) // return false;
这段注释调,或者删除
equals方法重写的时候写错了 最后没有return true
what are you talking about, dude?