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 ...
随机推荐
- 「mysql优化专题」你们要的多表查询优化来啦!请查收(4)
一.多表查询连接的选择: 相信这内连接,左连接什么的大家都比较熟悉了,当然还有左外连接什么的,基本用不上我就不贴出来了.这图只是让大家回忆一下,各种连接查询. 然后要告诉大家的是,需要根据查询的情况, ...
- Error updating database. Cause: java.sql.BatchUpdateException: Field 'id' doesn't have a default value
异常信息 ### Error updating database. Cause: java.sql.BatchUpdateException: Field 'id' doesn't have a de ...
- Android项目实战(三十九):Android集成Unity3D项目(图文详解)
需求: Unity3D 一般用于做游戏 而且是跨平台的.原本设计是Android 应用端A(原生开发)进行一些业务处理,最后由A 打开Android 应用端B(Unity3D 游戏开发)进行游戏操作. ...
- 配置java项目的intellij idea的运行环境
才疏学浅,只懂一点点前端的皮毛东西,对于项目运行环境的配置一无所知,今天简单记录一下! 前提:装好了jdk.maven.intellij idea. 1. file菜单->Open...打开从S ...
- 合并查询结果集UNION(去重), UNION ALL(不去重),INTERSECT(交集),MINUS(差集,第一个结果集减去第二个结果集,第一个结果集中不在第二个结果集中的记录行),[NOT] EXIST
MINUS配合[NOT] EXIST使用可以查询出包含符合某个条件的多记录的其他记录, 举例: 顾客A买了商品2.4.6 顾客B买了商品1.2.4 顾客C买了商品4.6 顾客D买了商品1.2.4.6 ...
- 那些容易遗忘的web前端问题
背景: 年底将至,本人这只才出门的前端菜鸟,终于有空闲的时间来整理一下最近投简历时出现的问题.有的是经常使用但是没有仔细留意造成的:有的是个人认为根本没人使用而忽略的.为了下次不出现这种错误,进行一下 ...
- Linux简介,虚拟机安装,网络设置,桌面和vim安装
Linux简介: linux代表系统内核.Linux系统指基于Linux内核的操作系统,由内核和程序结合组成.比较流行的发行版本由RedHat Linux.Fedora.Centos.Debian.U ...
- 【Zookeeper】源码分析目录
Zookeeper源码分析目录如下 1. [Zookeeper]源码分析之序列化 2. [Zookeeper]源码分析之持久化(一)之FileTxnLog 3. [Zookeeper]源码分析之持久化 ...
- 干货分享!关于APP导航菜单设计你应该了解的一切
导航菜单是人机交互的最主要的桥梁和平台,主要作用是不让用户迷失方向.现在市面上产品的菜单栏种类繁多,到底什么样的才是优秀的导航菜单设计呢?好的菜单设计不仅能提升整个产品的用户体验,而且还能让用户耳目一 ...
- 编译Twitter的Heron时一直报错“heron/bazel_configure.py", line 25, in <module> import semver ImportError: No module named semver”如何处理。
今天编译heron的时候,从官方git到的源码bazel_configure的时候一直报错如下: Traceback (most recent call last): File , in <mo ...