java set 泛型_JAVA集合框架之List和Set、泛型

一  List是有序可重复的集合

可以进行增删改查,直接看代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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类如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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

运行结果:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

添加了课程: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中无法添加出泛型类型及其子类型以外的类型

示例:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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

运行结果:

当前课程:高等数学

当前课程:高等化学

当前课程:大学英语

泛型添加子类型

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/** 泛型List添加泛型子类型

**/

public voidaddChildrenTest(){

System.out.println("");

ChildrenCourse cc1= newChildrenCourse();

courseToList.add(cc1);

cc1.id= 10;

cc1.name= "我是子类型的课程";

System.out.println("添加了一门泛型子类型的课程:");

testForEach();

}

View Code

其中ChildrenCourse类如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.collection;2

3 public class ChildrenCourse extendsCourse {4 }

View Code

运行结果:

添加了一门泛型子类型的课程:

forEach循环课程列表如下:

课程:3-英语

课程:1-语文

课程:2-数学

课程:6-生物

课程:10-我是子类型的课程

基本类型的泛型

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/** 泛型不能使用基本类型,但是能使用基本类型的包装类

* 基本类型如: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类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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

运行类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

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

运行结果:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

添加了课程:1-语文

添加了课程:2-数学

添加了课程:3-英语

添加了两门课程:5-化学;6-生物

添加了两门课程:7-地理;8-历史

目前共有课程如下:

当前课程为:3-英语

当前课程为:1-语文

当前课程为:2-数学

当前课程为:4-物理

当前课程为:7-地理

当前课程为:8-历史

当前课程为:5-化学

当前课程为:6-生物

学生张三开始选课:4选课程物理成功7选课程地理成功8选课程历史成功

学生张三共选了3门课程,如下:8-历史7-地理4-物理

View Code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值