Java中的集合框架(上)
- Java中的集合框架概述
集合的概念:
Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象。
集合的作用:
1.在类的内部,对数据进行组织;
2.简单的快速的搜索大数据量的条目;
3.有的集合接口,提供了一系列排列有序的元素,并且 可以在序列中间快速的插入或删除有关的元素。
4.有的集合接口,提供了映射关系,可以通过 关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。
与数组的对比一为何选择集合而不是数组
1.数组的长度固定,集合长度可变
2.数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所影射的具体对象
Java集合体系结构
Collection家族和Map家族组成。
- Collection接口&List接口简介
Collection接口子接口以及实现类
Collection接口
1.是List、Set和Queue接口的父接口
2.定义了可用于操作List、Set和Queue的方法一增删改查
List接口及其实现类——ArrayList
1.List是元素有序并且可以重复的集合,被称为序列
2.List可以精确的控制每个元素的插入位置,或删除某个位置元素
3.ArrayList——数组序列,是List的一个重要的实现类
4.ArryList底层是由数组实现的
- 学生选课——创建学生类和课程类
1.创建课程类(Course)
2.创建学生类
- 学生选课——添加课程1
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /* *备选课程类 * */ public class ListTest { /** * 用于存放备选课程List * */ public List CourseToSelect; public ListTest(){ this.CourseToSelect=new ArrayList(); } //用于往CourseToSelect中添加备选课程 public void addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2); } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); } }
运行结果为:
- 学生选课——添加课程11
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /* *备选课程类 * */ public class ListTest { /** * 用于存放备选课程List * */ public List CourseToSelect; public ListTest(){ this.CourseToSelect=new ArrayList(); } //用于往CourseToSelect中添加备选课程 public void addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); } }
运行结果为:
- 学生选课——查询课程
取得List中的元素的方法
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /* *备选课程类 * */ public class ListTest { /** * 用于存放备选课程List * */ public List CourseToSelect; public ListTest(){ this.CourseToSelect=new ArrayList(); } //用于往CourseToSelect中添加备选课程 public void addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) CourseToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); } }
运行结果为:
package com.imooc.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 addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); 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 cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); list.testIterator(); } }
运行结果为:
package com.imooc.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 addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); 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 cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : CourseToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); list.testIterator(); list.testForEach(); } }
运行结果为:
- 学生选课——课程修改
package com.imooc.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 addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); 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 cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : CourseToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 修改List中的元素 * */ public void testModify(){ CourseToSelect.set(4,new Course("7","毛概")); } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); list.testIterator(); list.testForEach(); list.testModify(); list.testForEach(); } }
运行结果为:
- 学生选课——课程删除
package com.imooc.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 addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); 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 cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : CourseToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 修改List中的元素 * */ public void testModify(){ CourseToSelect.set(4,new Course("7","毛概")); } /* * 删除list中的元素 * */ public void testRemove(){ Course cr=(Course) CourseToSelect.get(4); System.out.println("我是课程:"+cr.id+":"+cr.name+"我即将被要删除"); CourseToSelect.remove(cr); System.out.println("成功删除课程"); testForEach(); } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); list.testIterator(); list.testForEach(); list.testModify(); list.testForEach(); list.testRemove(); } }
运行结果为:
package com.imooc.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 addCourse(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); CourseToSelect.add(c); Course temp=(Course) CourseToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); CourseToSelect.add(0, c1); Course temp1=(Course) CourseToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); CourseToSelect.add(cq); Course temp0=(Course) CourseToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; CourseToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) CourseToSelect.get(2); Course temp3=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; CourseToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) CourseToSelect.get(2); Course temp5=(Course) CourseToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=CourseToSelect.size(); 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 cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : CourseToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 修改List中的元素 * */ public void testModify(){ CourseToSelect.set(4,new Course("7","毛概")); } /* * 删除list中的多组元素 * */ public void testRemove(){ System.out.println("即将删除4位置和5位置上的课程"); Course[] course={(Course)CourseToSelect.get(4),(Course)CourseToSelect.get(5)}; CourseToSelect.removeAll(Arrays.asList(course)); System.out.println("成功删除课程"); testForEach(); } public static void main(String []args){ ListTest list=new ListTest(); list.addCourse(); list.testGet(); list.testIterator(); list.testForEach(); list.testModify(); list.testForEach(); list.testRemove(); } }
运行结果为:
- 学生选课——应用泛型管理课程1
泛型
集合中的元素,可以是任意类型的对象(对象的引用)。如果把某一个对象放入集合,则会忽略他的类型,而把他当做Object处理
泛型则是规定了某个集合只可以存放特定类型的对象。会在编译期间进行类型检查,可以直接按指定类型获取集合元素
package com.imooc.collection; import java.util.ArrayList; import java.util.List; public class TestGeneric { //带有泛型Course的List类型属性 public List<Course>courses; public TestGeneric(){ this.courses=new ArrayList<Course>(); } //测试 public void testAdd(){ Course cr1=new Course("1","大学英语"); courses.add(cr1); Course cr2=new Course("2","Java基础"); courses.add(cr2); //泛型集合中,不能添加泛型规定的类型以外的对象,否则会报错! //courses.add("可以添加奇怪的东西吗??"); } //测试循环遍历 public void testForEach(){ for (Course cr:courses) { System.out.println(cr.id+":"+cr.name); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub TestGeneric tg=new TestGeneric(); tg.testAdd(); tg.testForEach(); } }
- 学生选课——应用泛型管理课程11
1.泛型集合中的限定类型不能使用基本数据类型。
2.可以通过使用包装类限定允许存入的基本数据类型。
- 学生选课——通过Set集合管理课
Set接口及其实现类——HashSet
1.set是元素无序并且不可以重复的集合,被称为集。
2.HashSet——哈希集,是Set的一个重要实现类
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; public SetTest(){ coursesToSelect=new ArrayList<Course>(); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 * */ public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } /* * 通过迭代器来遍历List * */ public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } /** 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub 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.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); /*Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个*/ //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); } public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } } }
运行结果为:
Java中的集合框架(上)的更多相关文章
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- Java中的集合框架(下)
学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...
- Java中的集合框架-Collection(一)
一,Collection接口 在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等. 基于数组的这些局限性,Java框架就产生了用于 ...
- JAVA 中的集合框架
java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 一.集合与数组 数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知 ...
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
随机推荐
- Python网络爬虫与信息提取(三)—— Re模块
regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...
- 使用node的fs读取文件
啊啊啊啊啊啊啊啊啊啊啊啊啊啊,被node的fs坑了一下午,我又爬上来了,要坚强的笑着活下去,嗯,没毛病老铁. let http = require('http'); let fs = require( ...
- UVA 10891 Game of Sum
题目大意就是有一个整数串,有两个人轮流取,每次可以取走一个前缀或后缀.两人都足够聪明,且都会使自己收益最大.求取完后先手比后手多多少. 每次我看见上面那句就会深感自己的愚笨无知. 所以来推推性质? 1 ...
- bzoj 3626: [LNOI2014]LCA
Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...
- 浅谈对ST表的一些理解
今天打了人生第一道ST表题(其实只是ST表跑得最快); ST表是一种用来解决RMQ问题的利器... 大体操作有两步: 第一部分nlogn预处理 第二部分O(1)询问 预处理就是运用倍增+区间动规 ST ...
- redis中使用 check-and-set 操作实现乐观锁
WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为. 被 WATCH 的键会被监视,并会发觉这些键是否被改动过了. 如果有至少一个被监视的键在 EXEC 执行之前 ...
- 用vue实现简单分页
在这个demo中,我用vue对一个json文件中的数据进行了简单的分页,没用用到交互,一下是我的实现过程. 基础逻辑 1.将json文件引入app.vue,并作为data返回 data(){ var ...
- lesson - 8 课程笔记 tar / gzip /bzip2 / xz /
作用:为linux的文件和目录创建档案,也可以在档案中改变文件,或者向档案中加入新的文件即用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的 语法:tar[必要参数][选择参数][ ...
- gitlab 接入 openldap、AD
=============================================== 20171009_第2次修改 ccb_warlock === ...
- BeanShell断言(一)
在beanShell中直接可以调用的变量,无需加前缀. 1.log 打印日志 log.info(“在控制台打印日志”); 2.SampleResult 获取SampleResult对象,可以通过这个对 ...