• 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中的集合框架(上)的更多相关文章

  1. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  2. Java中的集合框架-Collections和Arrays

    上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...

  3. Java中的集合框架-Map

    前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...

  4. Java中的集合框架-Collection(二)

    上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...

  5. Java中的集合框架

    概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...

  6. Java中的集合框架(下)

    学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...

  7. Java中的集合框架-Collection(一)

    一,Collection接口 在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等. 基于数组的这些局限性,Java框架就产生了用于 ...

  8. JAVA 中的集合框架

    java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 一.集合与数组 数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知 ...

  9. Java学习--java中的集合框架、Collection接口、list接口

    与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...

随机推荐

  1. Python网络爬虫与信息提取(三)—— Re模块

    regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...

  2. 使用node的fs读取文件

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊,被node的fs坑了一下午,我又爬上来了,要坚强的笑着活下去,嗯,没毛病老铁. let http = require('http'); let fs = require( ...

  3. UVA 10891 Game of Sum

    题目大意就是有一个整数串,有两个人轮流取,每次可以取走一个前缀或后缀.两人都足够聪明,且都会使自己收益最大.求取完后先手比后手多多少. 每次我看见上面那句就会深感自己的愚笨无知. 所以来推推性质? 1 ...

  4. bzoj 3626: [LNOI2014]LCA

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...

  5. 浅谈对ST表的一些理解

    今天打了人生第一道ST表题(其实只是ST表跑得最快); ST表是一种用来解决RMQ问题的利器... 大体操作有两步: 第一部分nlogn预处理 第二部分O(1)询问 预处理就是运用倍增+区间动规 ST ...

  6. redis中使用 check-and-set 操作实现乐观锁

    WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为. 被 WATCH 的键会被监视,并会发觉这些键是否被改动过了. 如果有至少一个被监视的键在 EXEC 执行之前 ...

  7. 用vue实现简单分页

    在这个demo中,我用vue对一个json文件中的数据进行了简单的分页,没用用到交互,一下是我的实现过程. 基础逻辑 1.将json文件引入app.vue,并作为data返回 data(){ var ...

  8. lesson - 8 课程笔记 tar / gzip /bzip2 / xz /

    作用:为linux的文件和目录创建档案,也可以在档案中改变文件,或者向档案中加入新的文件即用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的  语法:tar[必要参数][选择参数][ ...

  9. gitlab 接入 openldap、AD

    =============================================== 20171009_第2次修改                       ccb_warlock === ...

  10. BeanShell断言(一)

    在beanShell中直接可以调用的变量,无需加前缀. 1.log 打印日志 log.info(“在控制台打印日志”); 2.SampleResult 获取SampleResult对象,可以通过这个对 ...