利用集合存储课程信息:

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 但是最后的结果就是选择了两门课程。

集合框架(上):学生选课(collection)的更多相关文章

  1. mooc_java 集合框架上 学生所选课程

    用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...

  2. JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

    JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...

  3. 基于SSH框架的学生选课质量属性分析

    系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...

  4. Java 之集合框架 上(9)

    Java 中的集合框架 如果一个类中存在很多相同类型的属性. 例如:学生类 学生可以选课,因此存在很多课程类型的属性.但是每个学生选择的课程的种类和数量是不一样的. 如果将每一个课程类型的属性都列到课 ...

  5. 集合框架(JCF/Java Collection Framework)

    集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...

  6. 集合框架学习之Guava Collection

    开源工具包: Guava : Google Collection Apache:Commons Collecton 1.1 Google Collections Guava:google的工程师利用传 ...

  7. Java集合框架(一)—— Collection、Iterator和Foreach的用法

    1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...

  8. Java学习关于集合框架的基础接口--Collection接口

     集合框架(Collection  Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...

  9. 初识Java集合框架(Iterator、Collection、Map)

    1. Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 注意: 既有接口也有类,图中画实线的是类,画虚线的是接口 使用之前须要到导入java.util包 List ...

  10. Java集合框架介绍。Java Collection Frameworks = JCF

    Java集合框架 = Java Collection Frameworks  = JCF . 为了方便理解,我画了一张思维脑图.

随机推荐

  1. scrapy图片-爬取哈利波特壁纸

    话不多说,直接开始,直接放上整个程序过程 1.创建工程和生成spiders就不用说了,会用scrapy的都知道. 2.items.py class HarryItem(scrapy.Item): # ...

  2. 课时2:用python设计第一个游戏

    目录: 一.第一个小游戏 二.缩进 三.BIF 四.课时02课后习题及答案 ********************* 一.第一个小游戏 ********************* # p2_1.py ...

  3. 当鼠标点击input框时,想让全选input框的所有内容只需要加“onfocus="this.select();”就可以了

    当鼠标点击input框时,想让全选input框的所有内容只需要加“onfocus="this.select();”就可以了

  4. MyBatis原理分析

    MyBatis原理分析   参考博客: 深入理解mybatis原理: http://blog.csdn.net/luanlouis/article/details/40422941 一 . JDBC的 ...

  5. 优化web前端性能的几个方法

    1 减少http请求, a. 合并脚本跟样式文件,如可以把多个 CSS 文件合成一个,把多个 JS 文件合成一个. b. CSS Sprites 利用 CSS background 相关元素进行背景图 ...

  6. 一种机制,与js类似

    我们知道,当两个条件进行逻辑与操作的时候,其中任何一个条件为假,则表达式的结果为假.所以,遇到(A 且 B)这种表达式,如果A为假的话,B是不是真假都无所谓了,当遇到一个假条件的时候,程序也就没有必要 ...

  7. JDK源码分析--Collections

    1. 集合框架图 2. HashMap 成员构成 HashMap是通过"拉链法"实现的哈希表.它包括几个重要的成员变量:table, size, threshold, loadFa ...

  8. number(NOIP模拟赛Round 3)

    好吧,神奇的题目.. 原题传送门 这道题目,神奇的字符单调栈.. 首先预处理出1~n个数(大家都会.) 然后塞进字符串里,输出答案(水~) 然后.. 我们需要将所有的字符存入单调栈中,然后乱搞,就可以 ...

  9. Hidden (NOIP模拟赛)(字符串模拟QAQ)

    原题传送门 神奇的题目诶 原来以为字符串比较一定要O(NlogN) 结果发现可以均摊O(N) 首先我们来讲一讲原理 我们有3个指针i,j,k i=0,j=1,k=0 一开始我们不断对k+1直到找到ch ...

  10. 借教室(NOIP2012)

    原题传送门 其实就是求能满足多少个订单.. 然后搞上差分, 又因为如果前n个能够满足,那么前m个一定能满足(m<n) 所以可以二分(重点!) 然后乱搞..就AC了(其实也挺麻烦的...233~) ...