一 List是有序可重复的集合
可以进行增删改查,直接看代码
1 packagecom.collection;2
3 importjava.util.ArrayList;4 importjava.util.Arrays;5 importjava.util.Iterator;6 importjava.util.List;7
8 public classListTest {9
10 publicList courseToList;11
12 publicListTest(){13 this.courseToList = newArrayList();14 }15 public voidaddCourse(){16 //add方法
17 Course c1 = new Course(1,"语文");18 courseToList.add(c1);19 Course temp1 = (Course) courseToList.get(0);20 System.out.println("添加了课程:"+temp1.id+"-"+temp1.name);21
22 Course c2 = new Course(2,"数学");23 courseToList.add(c2);24 Course temp3 = (Course) courseToList.get(1);25 System.out.println("添加了课程:"+temp3.id+"-"+temp3.name);26
27 Course c3 = new Course(3,"英语");28 courseToList.add(0,c3);29 Course temp4 = (Course) courseToList.get(0);30 System.out.println("添加了课程:"+temp4.id+"-"+temp4.name);31
32 /*System.out.println(courseToList.size());33 Course c4 = new Course(4,"物理");34 //插入时,如果Index值小于0,或大于当前List长度,会报下标越界错误35 courseToList.add(4,c4);36 //等于List长度,不会报错37 courseToList.add(3,c4);*/
38
39 courseToList.add(3,new Course(4,"理综"));40
41 //addAll方法
42 Course[] c5 = {new Course(5,"化学"),new Course(6,"生物")};43 courseToList.addAll(Arrays.asList(c5));44 Course temp5 = (Course) courseToList.get(4);45 Course temp6 = (Course) courseToList.get(5);46 System.out.println("添加了两门课程:"+temp5.id+"-"+temp5.name+";"+temp6.id+"-"+temp6.name);47
48 Course[] c6 = {new Course(7,"地理"),new Course(8,"历史") };49 courseToList.addAll(4,Arrays.asList(c6));50 Course temp7 = (Course) courseToList.get(4);51 Course temp8 = (Course) courseToList.get(5);52 System.out.println("添加了两门课程:"+temp7.id+"-"+temp7.name+";"+temp8.id+"-"+temp8.name);53 }54
55 /*
56 * for循环出List中所有元素57 **/
58 public voidtestFor(){59 System.out.println("");60 System.out.println("for循环课程列表如下:");61 for(int i = 0;i
67 /*
68 * List迭代器循环出List中所有元素69 **/
70 public voidtestIt(){71 System.out.println("");72 System.out.println("迭代器循环课程列表如下:");73 Iterator it =(Iterator) courseToList.iterator();74 while(it.hasNext()){75 Course c =(Course) it.next();76 System.out.println("课程:"+c.id+"-"+c.name);77 }78 }79
80 /*
81 * for each循环出List中所有元素82 **/
83 public voidtestForEach(){84 System.out.println("");85 System.out.println("forEach循环课程列表如下:");86 for(Object obj:courseToList){87 Course c =(Course) obj;88 System.out.println("课程:"+c.id+"-"+c.name);89 }90 }91
92 /*
93 * List修改功能94 **/
95 public voidtestModify(){96 System.out.println("");97 System.out.println("即将修改第4门课");98 courseToList.set(3,new Course(4,"物理"));99 System.out.println("第4门课修改完成");100 }101
102 /*
103 * List删除功能104 **/
105 public voidtestDelete(){106 System.out.println("");107 //根据键值删除
108 Course c1 = (Course) courseToList.get(3);109 courseToList.remove(c1);110 System.out.println("删除课程:"+c1.id+"-"+c1.name);111 testForEach();112
113 //根据索引下标删除
114 courseToList.remove(3);115 System.out.println("");116 System.out.println("删除第4门课程:");117 testForEach();118
119 //根据键值批量删除
120 Course[] cs1 = {(Course) courseToList.get(3),(Course) courseToList.get(4)};121 System.out.println("");122 System.out.println("删除两门课程:");123 courseToList.removeAll(Arrays.asList(cs1));124 testForEach();125 }126
127 /*
128 * 泛型List添加泛型子类型129 **/
130 public voidaddChildrenTest(){131 System.out.println("");132 ChildrenCourse cc1 = newChildrenCourse();133 courseToList.add(cc1);134 cc1.id = 10;135 cc1.name = "我是子类型的课程";136 System.out.println("添加了一门泛型子类型的课程:");137 testForEach();138 }139 /*
140 * 泛型不能使用基本类型,但是能使用基本类型的包装类141 * 基本类型如:int long boolean142 * 基本类型的包装类如:Integer Long Boolean143 **/
144 public voidaddBasicType(){145 System.out.println("");146 //下面这句会报错147 //ArrayList basicTest = new ArrayList();
148 ArrayList basicTest = new ArrayList();149 basicTest.add(3);150 System.out.println("整形的泛型List第一个元素为:"+basicTest.get(0));151 }152
153 public static voidmain(String[] args){154 ListTest lt = newListTest();155 lt.addCourse();156 lt.testFor();157 lt.testIt();158 lt.testModify();159 lt.testForEach();160 lt.testDelete();161 lt.addChildrenTest();162 lt.addBasicType();163 }164 }
View Code
其中Course类如下:
1 packagecom.collection;2
3 importjava.util.HashSet;4 importjava.util.Set;5
6 public classCourse {7 public intid;8 publicString name;9 publicSet Course;10
11 public Course(intid,String name){12 this.id =id;13 this.name =name;14 this.Course = newHashSet();15 }16 publicCourse(){17
18 }19 }
View Code
运行结果:
添加了课程:1-语文
添加了课程:2-数学
添加了课程:3-英语
添加了两门课程:5-化学;6-生物
添加了两门课程:7-地理;8-历史
for循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:4-理综
课程:7-地理
课程:8-历史
课程:5-化学
课程:6-生物
迭代器循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:4-理综
课程:7-地理
课程:8-历史
课程:5-化学
课程:6-生物
即将修改第4门课
第4门课修改完成
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:4-物理
课程:7-地理
课程:8-历史
课程:5-化学
课程:6-生物
删除课程:4-物理
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:7-地理
课程:8-历史
课程:5-化学
课程:6-生物
删除第4门课程:
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:8-历史
课程:5-化学
课程:6-生物
删除两门课程:
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:6-生物
添加了一门泛型子类型的课程:
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:6-生物
课程:10-我是子类型的课程
整形的泛型List第一个元素为:3
View Code
二 泛型
泛型List中无法添加出泛型类型及其子类型以外的类型
示例:
1 packagecom.collection;2
3 importjava.util.ArrayList;4 importjava.util.List;5 importjava.util.Arrays;6
7 public classListTestPro {8
9 public ListcourseToList;10
11 publicListTestPro(){12 this.courseToList = new ArrayList();13 }14
15 public voidaddTest(){16 Course c1 = new Course(1,"高等数学");17 courseToList.add(c1);18 //泛型List中无法添加出泛型类型及其子类型以外的类型19 //courseToList.add("尝试下添加字串类型到List中");
20 Course[] cs1 = {new Course(2,"高等化学"),new Course(3,"大学英语")};21 courseToList.addAll(Arrays.asList(cs1));22 for(Course c:courseToList){23 System.out.println("当前课程:"+c.name);24 }25
26 }27
28 public static voidmain(String[] args){29 ListTestPro ltp = newListTestPro();30 ltp.addTest();31
32 }33
34 }
View Code
运行结果:
当前课程:高等数学
当前课程:高等化学
当前课程:大学英语
泛型添加子类型
/** 泛型List添加泛型子类型
**/
public voidaddChildrenTest(){
System.out.println("");
ChildrenCourse cc1= newChildrenCourse();
courseToList.add(cc1);
cc1.id= 10;
cc1.name= "我是子类型的课程";
System.out.println("添加了一门泛型子类型的课程:");
testForEach();
}
View Code
其中ChildrenCourse类如下:
1 packagecom.collection;2
3 public class ChildrenCourse extendsCourse {4 }
View Code
运行结果:
添加了一门泛型子类型的课程:
forEach循环课程列表如下:
课程:3-英语
课程:1-语文
课程:2-数学
课程:6-生物
课程:10-我是子类型的课程
基本类型的泛型
/** 泛型不能使用基本类型,但是能使用基本类型的包装类
* 基本类型如:int long boolean等
* 基本类型的包装类如:Integer Long Boolean等
**/
public voidaddBasicType(){
System.out.println("");//下面这句会报错//ArrayList basicTest = new ArrayList();
ArrayList basicTest = new ArrayList();
basicTest.add(3);
System.out.println("整形的泛型List第一个元素为:"+basicTest.get(0));
}
View Code
运行结果:
整形的泛型List第一个元素为:3
三 Set是无序的不可重复集合
set中添加某个对象无论添加多少次,
最终只会保留一个该对象(的引用),
并且,保留的是第一次添加的那个
show me the code :
Student类
1 packagecom.collection;2
3 importjava.util.HashSet;4 importjava.util.Set;5
6 public classStudent {7 public intid;8 publicString name;9
10 //set中添加某个对象无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那个
11
12 public Set course = new HashSet();13
14 public Student(intid, String name){15 this.id =id;16 this.name =name;17 }18
19 }
View Code
运行类
1 packagecom.collection;2
3 importjava.util.ArrayList;4 importjava.util.List;5 importjava.util.Arrays;6 importjava.util.Scanner;7 importjava.lang.String;8
9 public classSetTest {10
11 public List courseToList = new ArrayList();12
13 public voidaddCourse(){14 //add方法
15 Course c1 = new Course(1,"语文");16 courseToList.add(c1);17 Course temp1 = (Course) courseToList.get(0);18 System.out.println("添加了课程:"+temp1.id+"-"+temp1.name);19
20 Course c2 = new Course(2,"数学");21 courseToList.add(c2);22 Course temp3 = (Course) courseToList.get(1);23 System.out.println("添加了课程:"+temp3.id+"-"+temp3.name);24
25 Course c3 = new Course(3,"英语");26 courseToList.add(0,c3);27 Course temp4 = (Course) courseToList.get(0);28 System.out.println("添加了课程:"+temp4.id+"-"+temp4.name);29
30
31 courseToList.add(3,new Course(4,"物理"));32
33 //addAll方法
34 Course[] c5 = {new Course(5,"化学"),new Course(6,"生物")};35 courseToList.addAll(Arrays.asList(c5));36 Course temp5 = (Course) courseToList.get(4);37 Course temp6 = (Course) courseToList.get(5);38 System.out.println("添加了两门课程:"+temp5.id+"-"+temp5.name+";"+temp6.id+"-"+temp6.name);39
40 Course[] c6 = {new Course(7,"地理"),new Course(8,"历史") };41 courseToList.addAll(4,Arrays.asList(c6));42 Course temp7 = (Course) courseToList.get(4);43 Course temp8 = (Course) courseToList.get(5);44 System.out.println("添加了两门课程:"+temp7.id+"-"+temp7.name+";"+temp8.id+"-"+temp8.name);45 }46 public voidcourseForEach(){47 System.out.println("");48 System.out.println("目前共有课程如下:");49 for(Course c : courseToList){50 System.out.println("当前课程为:"+c.id+"-"+c.name);51 }52 }53
54 /*
55 * 让同学张三输入课程ID选课程,能选三门56 **/
57 public voidstudentSelectCourse(){58 System.out.println("");59 Student s_zhang = new Student(1,"张三");60 System.out.println("学生"+s_zhang.name+"开始选课:");61
62 Scanner console = newScanner(System.in);63 for(int i = 0;i < 3 ; i++){64 String id =console.next();65 for(Course c : courseToList){66 if(id.equals( String.valueOf(c.id))){67 s_zhang.course.add(c);68 /*
69 * set中添加某个对象无论添加多少次,70 * 最终只会保留一个该对象(的引用),71 * 并且,保留的是第一次添加的那个72 **/
73 s_zhang.course.add(c);//set类型无法添加重复的数据
74 System.out.println("选课程"+c.name+"成功");75 }76 }77 }78
79 System.out.println("学生"+s_zhang.name+"共选了"+s_zhang.course.size()+"门课程,如下:");80 for(Course c1:s_zhang.course){81 System.out.println(c1.id+"-"+c1.name);82 }83 }84
85
86 public static voidmain(String[] args){87 SetTest st = newSetTest();88 st.addCourse();89 st.courseForEach();90 st.studentSelectCourse();91
92 }93 }
View Code
运行结果:
添加了课程:1-语文
添加了课程:2-数学
添加了课程:3-英语
添加了两门课程:5-化学;6-生物
添加了两门课程:7-地理;8-历史
目前共有课程如下:
当前课程为:3-英语
当前课程为:1-语文
当前课程为:2-数学
当前课程为:4-物理
当前课程为:7-地理
当前课程为:8-历史
当前课程为:5-化学
当前课程为:6-生物
学生张三开始选课:4选课程物理成功7选课程地理成功8选课程历史成功
学生张三共选了3门课程,如下:8-历史7-地理4-物理
View Code