常州建行网站,网站不被百度收录,商城类网站建设篇,Wordpress都有什么商城插件第一节 JAVA中的集合框架概述集合的概念#xff0c;现实生活中#xff1a;很多事物凑在一起就是一个集合#xff1b;数学中的集合#xff1a;具有相同属性事物的总体#xff1b;JAVA中的集合#xff1a;是一种工具类#xff0c;就像是容器#xff0c;储存任意数量的具有…第一节 JAVA中的集合框架概述集合的概念现实生活中很多事物凑在一起就是一个集合数学中的集合具有相同属性事物的总体JAVA中的集合是一种工具类就像是容器储存任意数量的具有共同属性的对象。集合的作用在类的内部对数据进行组织(如果有些属性类型相同但意义与作用不同咱们就不能把它们放到集合如学生的姓名和性别属性)简单而快速的搜索大数量的条目。有的集合接口提供了一系列排列有序的元素并且可以在序列中间快速的插入或者删除有关元素有的集合接口提供了映射关系可以通过关键字key去快速查找到对应的唯一对象而这个关键字可以是任意类型。集合其实就是用来承装其它对象的容器。与数组相比为何选择集合而不是数组数组的长度固定还得复制集合的长度可变。数组只能通过数组下标访问元素类型固定而有的集合可以通过任意类型查找所映射的具体对象数组还要遍历元素比较麻烦。集合的框架体系结构将collection想象成单身宿舍三个子接口。1.List(序列)排列有序可重复2.Queue(队列)排列有序可重复3.set(集)无序不可重复将map当成成对出现Collection 是存储的一个一个的对象而Map提供映射的关系内部以的KeyValue两个对象为一个映射来存储数据Entry类(键值对)是Map的内部类KeyValue就是Entry的实例key和value可以是任意类型的对象。两个根接口Collection和MapCollection的子接口有List序列(有序可重复)、Queue队列、Set集(无序不可重复)。实现类分别ArrayList数组序列LinkedList链表也是List的接口实现类HashSet哈希集Map的实现类有HashMap哈希表。在Collection或Map内部是如何存储对象呢在每一个Collection类中存储的就是一个个独立的对象而Map内部有些特殊。有些集合内部能提供一种映射的关系就是指Map类在Map类的内部一个key一个value两个对象为一个映射去存储数据这样的一个映射就是Entry类的实例这个Entry类是Map类的一个内部类咱们把它翻译成键值对一个键一个值两个凑成映射的一对其中key和value可以是任意类型的对象。在Collection和Map众多子接口和实现类当中ArrayList、HashSet、HashMap使用最多的三个实现类第二节 Collection接口List接口简介Collection接口、子接口及其实现类Collection接口是java框架中的根接口也是List、Set和Queue接口的父接口定义了很多方法可用于操作List、Set和Queue的方法对集合的增删改查可在API中查看Collection的介绍和方法。List接口和其实现类 ArrayList1.List是元素有序并且可以重复的集合被称为序列2.List可以精确的控制每个元素的插入位置或删除某个指定位置的元素3.ArrayList 数组序列是List的一个重要实现类4.ArrayList底层是由数组实现的第三节 学生选课--创建学生类和课程类/*** 课程类* Created by Administrator on 2017/4/2.*/public class Course {private String id;private String name;public String getId() {return id;}public String getName(){return name;}public void setId(String id){this.idid;}public void setName(String name) {this.name name;}public Course(String id,String name){this.idid;this.namename;}}import java.util.HashSet;import java.util.Set;/*** 学生类* Created by Administrator on 2017/4/2.*/public class Student {private String id;private String name;public Set courses;//课程信息存放在set属性里和list一样是一个子接口public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public Student(String id,String name){this.idid;this.namename;this.coursesnew HashSet();//构造方法里不能直接实例化因为set是一个接口通过HashSet()对courses实例化HashSet是一个重要的实现类}}第四节 学生选课--添加课程I在这里注意在List中添加元素如果插入位置如果大于容量的长度就会报越界异常如等于容量会在队尾添加一个小于0也会报错。import java.util.ArrayList;import java.util.List;/*** 添加课程* Created by Administrator on 2017/4/2.*///既然学生要选课就要存放备选课程用一个List容器来存放备选课程public class ListTest {//新建ListTest类//创建一个List类型的属性用于存放备选课程的容器Listpublic List courseToSelect;//给类添加一个构造方法public ListTest(){this.courseToSelectnew ArrayList();//因为List是一个接口咱们不能直接将它实例化这里就引入了ArrayList来实现接口的实例化}//用于往courseToSelect添加课程对象public void testAdd(){//首先要有一个课程对象的实例Course cr1new Course(1,数据结构);//调用add方法添加courseToSelect.add(cr1);//打印输出 courseToSelect.get(0)的数据//当一个对象存入集合后它就变成了Object类型的数据取出时就要把类型转换回来Course temp(Course) courseToSelect.get(0);System.out.println(成功添加课程temp.getId():temp.getName());Course cr2new Course(2,C语言);//重载的add方法可以指定位置添加元素courseToSelect.add(0,cr2);Course temp2(Course) courseToSelect.get(0);System.out.println(成功添加课程temp2.getId():temp2.getName());}//调用main方法测试public static void main(String[] args) {ListTest ltnew ListTest();lt.testAdd();}}第五节 添加课程IIadd和addAll分别各有两个方法参数不同。其中addAll 需要先把数组转换成list Arrays.asList()这个方法也是有两种用法可以指定位置添加元素。Course[] cr3{new Course(3,离散数学),new Course(4,汇编语言)};//创建一个课程数组//调用addAll把数组添加进去但是这儿的参数要是Collection的实例// 就需要把数组转换成List用Arrays.asList()方法courseToSelect.addAll(Arrays.asList(cr3));//输出Course temp3(Course)courseToSelect.get(2);Course temp4(Course)courseToSelect.get(3);System.out.println(成功添加课程temp3.getId():temp3.getName();temp4.getId():temp4.getName());Course[] cr4{new Course(5,高等数学),new Course(6,大学英语)};courseToSelect.addAll(2,Arrays.asList(cr4));Course temp5(Course)courseToSelect.get(2);Course temp6(Course)courseToSelect.get(3);System.out.println(成功添加课程temp5.getId():temp5.getName();temp6.getId():temp6.getName());}第六节 学生选课--课程查询get方法可以取到指定位置的元素如果想取出每一个则可以使用for循环来遍历List由于List中的数据类型是Object再输出时需要强制转换下类型。长度集合.size()方法。/*** 定义方法循环遍历List中的元素*/public void test1(){System.out.println(使用for循环遍历List中一共有以下课程);for(int i0;i//因为类型不同需要强制类型转换System.out.println(课程((Course)courseToSelect.get(i)).getId():((Course)courseToSelect.get(i)).getName());}}public void test2(){System.out.println(使用foreach循环遍历List中一共有以下课程);for(Object obj:courseToSelect){//因为类型不同需要强制类型转换System.out.println(课程((Course)obj).getId() :((Course)obj).getName());}}接下来还可以试验下List的重复性问题List中可以重复元素还有一种的特殊遍历方法是通过迭代器来遍历集合中的元素 IteratorIterator就是迭代器的意思在Collection接口中定义了iterator方法通过这个方法可以返回一个当前集合对象的迭代器再通过这个迭代器去遍历集合中的每个元素Iterator本身也是一个接口。迭代器本身只是用来遍历元素的它自己不具备任何存储的功能可以理解为迭代器依赖于某个集合而存在本身不能独立存在。public void test3(){System.out.println(通过迭代器遍历集合中元素共有以下课程);//通过集合的iterator方法来创建迭代器的实例Iterator itcourseToSelect.iterator();//遍历元素如有元素则输出它的真值while(it.hasNext()){Course cr(Course) it.next();System.out.println(课程cr.getId():cr.getName());}}第七节 学生选课--课程修改如何修改List张的元素用set方法用指定元素替换列表中指定位置的元素。set(int indexE element)参数要替换元素的索引要在指定位置存储的元素courseToSelect.set(4, new Course(7,毛概));第八节 学生选课--课程删除删除List中的元素删除的方法有remove 和removeAll方法remove(int index)移除列表中指定位置的元素remove(object o)此列表中移除第一次出现的指定元素(如果存在)removeAll(Collection c)从此列表中移除指定Collection中包含的其所有元素在某个集合中将另一个集合中的所有元素完全删除注意要将数组转换成List——Arrays.asList();public void test5(){Course[] courses{(Course)courseToSelect.get(4),(Course)courseToSelect.get(5)};courseToSelect.removeAll(Arrays.asList(courses));courseToSelect.remove(0);courseToSelect.remove(courseToSelect.get(0));}第九节 学生选课--应用泛型管理是否有方法可以控制我往某个List或某个集合中添加元素的类型呢这时我们就要用到泛型。泛型集合中的元素可以是任意类型的对象(对象的引用)集合里储存的都是一个个引用它们都是指向某个具体的对象的。如果把某个对象放入集合则会忽略他的类型仅仅把它当做Object来处理取出也是把它当做Object来取出。泛型则是规定了某个集合只能存放特定类型的对象并且会在编译期间对其进行类型检查可以直接按指定类型获取出集合中的元素这样我们在后续获取并使用时不用因为Object类型再去强制转换了直接就能使用。public class ListText {public List courses;public ListText(){this.coursesnew ArrayList();}}第十节 应用泛型管理课程其实在泛型集合中除了可以保存泛型类型的对象实例还可以存入泛型的子类型的对象实例。泛型集合可以添加泛型子类型的对象实例泛型不能是基本类型必须是引用类型如果非要用基本类型可以通过使用包装类限定允许存入的基本数据类型。int Integer long Long boolean Boolean泛型是基本类型的包装类的实例化 举例List Integer listnew ArrayList Integer ();第十一节 通过Set集合来管理课程Set接口及其实现类——HashSetSet是元素无序并且不可以重复的集合被称为集HashSet——哈希集是Set的一个重要实现类Set没有提供方法去修改某个位置上的元素由于List有序Set无序且不可重复所以Set不可能提供一个指定索引位置去修改相应元素的办法。没有set()方法一样有add addAll remove removeAll size()等方法Set方法的遍历只能用foreach或者iterator不能用get方法因为无序也无法查询指定索引位置的元素。package student;import java.util.Arrays;import java.util.List;import java.util.ArrayList;import java.util.Scanner;/*** Created by Administrator on 2017/4/3.*/public class SetTest {/***案例功能* 提供备选课程* 创建学生对象并给该学生添加三门课程添加在学生的courses—Set* 类型的属性当中* 显示备选课程* 循环三次每次输入课程ID* 往学生的courses属性中添加与输入的ID相匹配的课程* 输出学生选择的课程*///定义一个课程List并且调用构造方法初始化。后将之前的添加方法赋值过来并遍历课程输出public List courseToSelect;public SetTest(){this.courseToSelectnew ArrayList();}public void testAdd(){//首先要有一个课程对象的实例Course cr1new Course(1,数据结构);//调用add方法添加courseToSelect.add(cr1);//打印输出 courseToSelect.get(0)的数据//当一个对象存入集合后它就变成了Object类型的数据取出时就要把类型转换回来Course temp(Course) courseToSelect.get(0);System.out.println(成功添加课程temp.getId():temp.getName());Course cr2new Course(2,C语言);//重载的add方法可以指定位置添加元素courseToSelect.add(0,cr2);Course temp2(Course) courseToSelect.get(0);System.out.println(成功添加课程temp2.getId():temp2.getName());Course[] cr3{new Course(3,离散数学),new Course(4,汇编语言)};//创建一个课程数组//调用addAll把数组添加进去但是这儿的参数要是Collection的实例// 就需要把数组转换成List用Arrays.asList()方法courseToSelect.addAll(Arrays.asList(cr3));//输出Course temp3(Course)courseToSelect.get(2);Course temp4(Course)courseToSelect.get(3);System.out.println(成功添加课程temp3.getId():temp3.getName();temp4.getId():temp4.getName());Course[] cr4{new Course(5,高等数学),new Course(6,大学英语)};courseToSelect.addAll(2,Arrays.asList(cr4));Course temp5(Course)courseToSelect.get(2);Course temp6(Course)courseToSelect.get(3);System.out.println(成功添加课程temp5.getId():temp5.getName();temp6.getId():temp6.getName());}public void test2(){System.out.println(使用foreach循环遍历List中一共有以下课程);for(Object obj:courseToSelect){//因为类型不同需要强制类型转换System.out.println(课程((Course)obj).getId() :((Course)obj).getName());}}public static void main(String[] args) {SetTest stnew SetTest();st.testAdd();st.test2();Student st1new Student(1,宫园薰);System.out.println(欢迎st1.getName()同学选课每位同学可以选取三门课程哦);Scanner scnew Scanner(System.in);//for循环循环三次通过对比ID来存入对应的课程信息for(int i0;i3;i) {System.out.println(请输入您选择的课程ID);String courseId sc.next();for (Course cr : st.courseToSelect) {if (courseId.equals(cr.getId())) {st1.courses.add(cr);break;}}}for(Course cr2:st1.courses){System.out.println(您选择了课程IDcr2.getId():cr2.getName());}}}