集合框架(上):学生选课(collection)
利用集合存储课程信息:
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)的更多相关文章
- mooc_java 集合框架上 学生所选课程
用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...
- 基于SSH框架的学生选课质量属性分析
系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...
- Java 之集合框架 上(9)
Java 中的集合框架 如果一个类中存在很多相同类型的属性. 例如:学生类 学生可以选课,因此存在很多课程类型的属性.但是每个学生选择的课程的种类和数量是不一样的. 如果将每一个课程类型的属性都列到课 ...
- 集合框架(JCF/Java Collection Framework)
集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...
- 集合框架学习之Guava Collection
开源工具包: Guava : Google Collection Apache:Commons Collecton 1.1 Google Collections Guava:google的工程师利用传 ...
- Java集合框架(一)—— Collection、Iterator和Foreach的用法
1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...
- Java学习关于集合框架的基础接口--Collection接口
集合框架(Collection Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...
- 初识Java集合框架(Iterator、Collection、Map)
1. Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 注意: 既有接口也有类,图中画实线的是类,画虚线的是接口 使用之前须要到导入java.util包 List ...
- Java集合框架介绍。Java Collection Frameworks = JCF
Java集合框架 = Java Collection Frameworks = JCF . 为了方便理解,我画了一张思维脑图.
随机推荐
- 孤荷凌寒自学python第二十天python的匿名函数与偏函数
孤荷凌寒自学python第二十天python的匿名函数与偏函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python为使函数的使用更加方便高效,可以使用两种特殊的函数简化语句书写. 一 ...
- HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )
给你最多1000个圆,问画一条直线最多能与几个圆相交,相切也算. 显然临界条件是这条线是某两圆的公切线,最容易想到的就是每两两圆求出所有公切线,暴力判断一下. 可惜圆有1000个,时间复杂度太高. 网 ...
- VS调试时不捕捉Exception
在方法上添加 [DebuggerHidden] 这样,发生错误的时候,VS就不会捕捉到这个错误,否则,会在错误的地方中断. [DebuggerHidden] public void DeleteAll ...
- WCF的坎坷发布之路
背景 发布WCF服务之后,总会遇到这样活着那样的错误.再加上对IIS中的一些程序应用不太熟悉,所以解决起来比较困难.网上的解决方案特别多,但都只给出了个别一种原因.经过一个下午和一个上午的 ...
- hdu 2579 Dating with girls(2) (bfs)
Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- windows安装 Nodejs,NPM, CNPM
1, dowload Nodejs from : http://nodejs.cn/download/ 下载完毕后,可以安装node,建议不要安装在系统盘(本例安装在 D:\vueProject) ...
- 微信支付:回调地址notify_url不能带参数
最近在用Yii2写一个微信商城,在调用微信支付接口时遇到了问题. 支付环节是正常的,微信端能收到支付成功的系统提示,然而回调url始终收不到微信服务器的POST,经过手动测试,回调页面的逻辑也没有问题 ...
- BZOJ1877 [SDOI2009]晨跑 【费用流】
题目 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他 坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街道 ...
- Yum只更新安全补丁的方法
当大家想只给RHEL系统更新安全补丁的时候,往往会把其他一些无用的组件给更新下来,现在就给大家说下怎么只更新安全补丁而又不更新其他组件. 1.安装yum插件即可: yum install yum- ...
- ztree 2.0 节点搜索
最近做了一个简单的功能,树节点的搜索.ztree的版本的2.0,3.X以上的版本请百度解决办法. 1.在setting中增加 function getFontCss(treeId, treeNode) ...