利用集合存储课程信息:

1.Course类

package com.collection;

public class Course {
public String id;
public String name;
public Course(String id,String name)
{
this.id=id;
this.name=name;
} }

2.ListTest类

package com.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List; /**
* 备选课程类
*/ public class ListTest {
//List用于存放备选课程
public List CourseToSelect;
public ListTest(){
this.CourseToSelect = new ArrayList();
}
//用于往CourseToSelect添加备选课程
public void TestAdd(){
//创建一个课程对象,并通过调用add方法,添加到备选课程List中
Course c1 = new Course("1","数据结构");
CourseToSelect.add(c1);
Course temp = (Course) CourseToSelect.get(0);
System.out.println("添加了课程:"+temp.id+"_"+temp.name); Course c2 = new Course("2","c语言");
CourseToSelect.add(0, c2);
Course temp2 = (Course) CourseToSelect.get(0);
System.out.println("添加了课程:"+temp2.id+"_"+temp2.name); Course[] course = {new Course("3","离散数学"),new Course("4","汇编语言")};
CourseToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course) CourseToSelect.get(2);
Course temp4 = (Course) CourseToSelect.get(3);
System.out.println("添加了两门课程:"+temp3.id+"_"+temp3.name+";"+temp4.id+"_"+temp4.name); CourseToSelect.add(c1);
Course temp0 = (Course) CourseToSelect.get(0);
System.out.println("添加了课程:"+temp0.id+"_"+temp0.name); Course[] course2 = {new Course("5","高等数学"),new Course("6","大学英语")};
CourseToSelect.addAll(2, Arrays.asList(course2));
Course temp5 = (Course) CourseToSelect.get(2);
Course temp6 = (Course) CourseToSelect.get(3);
System.out.println("添加了两门课程:"+temp5.id+"_"+temp5.name+";"+temp6.id+"_"+temp6.name); }
//取得List中元素的方法
public void testGet(){
int size = CourseToSelect.size();
System.out.println("有如下课程待选:");
for(int i = 0;i<size;i++)
{
Course cr = (Course) CourseToSelect.get(i);
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
//通过迭代器遍历List中的元素
public void testIterator(){
//通过集合的iterator方法,取得迭代器的实例;
Iterator it = CourseToSelect.iterator();
System.out.println("有如下课程待选(通过迭代器取得):");
while(it.hasNext()){
Course cr2 = (Course) it.next();
System.out.println("课程:"+cr2.id+":"+cr2.name);
} }
//通过for each遍历list中的元素
public void testForEach(){
System.out.println("有如下课程待选(通过for each取得):");
for(Object obj:CourseToSelect){
Course cr = (Course) obj;
System.out.println("课程:"+cr.id+":"+cr.name); } } //修改List中的元素
public void testModify(){
CourseToSelect.set(6, new Course("7","毛概")); } //删除List中的元素
public void testRemove(){
/*Course cr = (Course) CourseToSelect.get(6);
System.out.println("课程:"+cr.id+":"+cr.name+"我即将被删除");
CourseToSelect.remove(cr); //删除具体的元素*/
//CourseToSelect.remove(4); //删除索引4位置上的元素
Course[] courses = {(Course)CourseToSelect.get(4),(Course)CourseToSelect.get(5)};
CourseToSelect.removeAll(Arrays.asList(courses));
System.out.println("成功被删除");
testForEach();
} public static void main(String[] args){
ListTest lt = new ListTest();
lt.TestAdd();
lt.testGet();
lt.testIterator();
lt.testForEach();
lt.testModify();
lt.testForEach();
lt.testRemove();
} }

3.testGeneric类

package com.collection;

import java.util.ArrayList;
import java.util.List; public class TestGeneric { /**
* @param args
*/
//带有泛型List--course的类型属性
public List<Course> courses; public TestGeneric(){
this.courses=new ArrayList<Course>();
} //测试添加
public void testAdd(){
Course cr1 = new Course("1","大学语文");
courses.add(cr1);
courses.add("平常的字符串");
}
public static void main(String[] args) {
// TODO 自动生成的方法存根 } }
courses.add("平常的字符串")  编译器报错,因为泛型对规定了类型必须是course类型的元素

泛型例子

1.TestGeneric类

package com.collection;

import java.util.ArrayList;
import java.util.List; public class TestGeneric { /**
* @param args
*/
//带有泛型List--course的类型属性
public List<Course> courses; public TestGeneric(){
this.courses=new ArrayList<Course>();
} //测试添加
public void testAdd(){
Course cr1 = new Course("1","大学语文");
courses.add(cr1);
//泛型集合中,不能添加泛型规定的类型以及子类型以外的对象,否则编译器报错
//courses.add("平常的字符串");
Course cr2 = new Course("2","java基础");
courses.add(cr2); } //泛型集合可以添加泛型子类型的对象实例
public void testChild(){
ChildCourse ccr = new ChildCourse();
ccr.id="3";
ccr.name="我是子类型的课程对象实例 ";
courses.add(ccr);
} //泛型不能使用基本类型
public void testBasicType(){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
System.out.println("基本类型必须使用包装类作为泛型~~"+list.get(0));
} //测试方法
public void testForEach(){
for(Course cr:courses){
System.out.println(cr.id+":"+cr.name);
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
TestGeneric tg = new TestGeneric();
tg.testAdd();
tg.testForEach();
tg.testChild();
tg.testForEach();
tg.testBasicType(); } }

2.ChildCourse继承Course类(在建立类中选择超类Course中即可)

package com.collection;

public class ChildCourse extends Course {

}

建立继承类只是为了验证泛型中可以添加子类型的对象实例

学生手动选课,显示学生的选课信息

1.student类

package com.collection;

import java.util.HashSet;
import java.util.Set; /**
* @学生类
*
*/ public class Student { public String id;
public String name;
public Set<Course> courses;
public Student(String id,String name)
{
this.id=id;
this.name=name;
this.courses=new HashSet<Course>();
} }

2.SetTest类

package com.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class SetTest { /**
* @param args
*/ public List<Course> CourseToSelect;
public SetTest(){
CourseToSelect = new ArrayList<Course>();
} //添加元素
public void TestAdd(){
//创建一个课程对象,并通过调用add方法,添加到备选课程List中
Course c1 = new Course("1","数据结构");
CourseToSelect.add(c1);
Course temp = (Course) CourseToSelect.get(0);
//System.out.println("添加了课程:"+temp.id+"_"+temp.name); Course c2 = new Course("2","c语言");
CourseToSelect.add(0, c2);
Course temp2 = (Course) CourseToSelect.get(0);
//System.out.println("添加了课程:"+temp2.id+"_"+temp2.name); Course[] course = {new Course("3","离散数学"),new Course("4","汇编语言")};
CourseToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course) CourseToSelect.get(2);
Course temp4 = (Course) CourseToSelect.get(3);
//System.out.println("添加了两门课程:"+temp3.id+"_"+temp3.name+";"+temp4.id+"_"+temp4.name); //CourseToSelect.add(c1);
//Course temp0 = (Course) CourseToSelect.get(0);
//System.out.println("添加了课程:"+temp0.id+"_"+temp0.name); Course[] course2 = {new Course("5","高等数学"),new Course("6","大学英语")};
CourseToSelect.addAll(2, Arrays.asList(course2));
Course temp5 = (Course) CourseToSelect.get(2);
Course temp6 = (Course) CourseToSelect.get(3);
//System.out.println("添加了两门课程:"+temp5.id+"_"+temp5.name+";"+temp6.id+"_"+temp6.name); } //测试For Each打印输出
public void testForEach(){
System.out.println("有如下课程待选(通过for each取得):");
for(Object obj:CourseToSelect){
Course cr = (Course) obj;
System.out.println("课程:"+cr.id+":"+cr.name); } }
public static void main(String[] args) {
// TODO 自动生成的方法存根
SetTest st = new SetTest();
st.TestAdd();
st.testForEach(); Student student = new Student("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");
String courseId=console.next();
for (Course cr : st.CourseToSelect) {
if(cr.id.equals(courseId)){
student.courses.add(cr);
}
}
}
st.testForEachForSet(student); } // 打印输出,学生所选的课程
public void testForEachForSet(Student student){
for (Course cr : student.courses) {
System.out.println("选择了课程:"+cr.id+":"+cr.name); }
} }

注:Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的事第一次添加的那个。

添加了两次课程1 但是最后的结果就是选择了两门课程。

最新文章

  1. Android学习笔记(十)
  2. java中String的一些方法
  3. mvc ajax dropdownlist onchang事件响应
  4. 最短路(Dijkstra) POJ 1062 昂贵的聘礼
  5. JDBC体会
  6. Spring EL Lists, Maps example
  7. 【转】国内较快的maven镜像
  8. cURL中的超时设置
  9. HDU 2063 裸奔的二分图最大匹配
  10. 《Head First Python》学习笔记03 异常处理
  11. mysql count max min 语句用法
  12. linux的学习系列 4---文件权限和访问模式
  13. 运行python “没有那个文件或目录3” 或 “/usr/local/bin/python3^M: bad interpreter: 没有那个文件或目录” 错误
  14. WEB学习笔记5-标准的HTML页面结构
  15. Django admin注册model究竟要怎么写才优雅
  16. javascript 获取节点元素的封装
  17. 【windows核心编程】远程线程DLL注入
  18. Feature如何解决参数数量不匹配
  19. servlet中的执行顺序
  20. LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci

热门文章

  1. ubantu 系统常见问题
  2. Ubuntu下禁用笔记本自带键盘
  3. 通过nbviwer在线分享python notebook
  4. J2EE的十三个技术——EJB之实体Bean
  5. hadoop2.6.4【ubuntu】单机环境搭建 系列1
  6. perf 的事件
  7. mac系统安装/升级node
  8. asp.net 条码 一维条码 生成, 一共有32中格式类型
  9. 2-SAT学习整理
  10. CORS跨域cookie传递