list indexof java_JAVA中List之contains、containsAll、indexOf

转自:https://www.imooc.com/video/3731

仅供个人学习记录,侵删

一   回顾下Collection

0ea8cc6fbda0fd31f6ec837854f78e06.png

二  List的contains

查询List中是否包含某个值

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.collection;2

3 import java.util.*;4

5 public classListTest {6

7 publicList courseToList;8

9 publicListTest(){10 this.courseToList = newArrayList();11 }12 public voidaddCourse(){13 //add方法

14 Course c1 = new Course(1,"语文");15 courseToList.add(c1);16 Course temp1 = (Course) courseToList.get(0);17 System.out.println("添加了课程:"+temp1.id+"-"+temp1.name);18

19 Course c2 = new Course(2,"数学");20 courseToList.add(c2);21 Course temp3 = (Course) courseToList.get(1);22 System.out.println("添加了课程:"+temp3.id+"-"+temp3.name);23

24 Course c3 = new Course(3,"英语");25 courseToList.add(0,c3);26 Course temp4 = (Course) courseToList.get(0);27 System.out.println("添加了课程:"+temp4.id+"-"+temp4.name);28

29 /*System.out.println(courseToList.size());30 Course c4 = new Course(4,"物理");31 //插入时,如果Index值小于0,或大于当前List长度,会报下标越界错误32 courseToList.add(4,c4);33 //等于List长度,不会报错34 courseToList.add(3,c4);*/

35

36 courseToList.add(3,new Course(4,"理综"));37

38 //addAll方法

39 Course[] c5 = {new Course(5,"化学"),new Course(6,"生物")};40 courseToList.addAll(Arrays.asList(c5));41 Course temp5 = (Course) courseToList.get(4);42 Course temp6 = (Course) courseToList.get(5);43 System.out.println("添加了两门课程:"+temp5.id+"-"+temp5.name+";"+temp6.id+"-"+temp6.name);44

45 Course[] c6 = {new Course(7,"地理"),new Course(8,"历史") };46 courseToList.addAll(4,Arrays.asList(c6));47 Course temp7 = (Course) courseToList.get(4);48 Course temp8 = (Course) courseToList.get(5);49 System.out.println("添加了两门课程:"+temp7.id+"-"+temp7.name+";"+temp8.id+"-"+temp8.name);50 }51

52 /*

53 * for循环出List中所有元素54 **/

55 public voidtestFor(){56 System.out.println("");57 System.out.println("for循环课程列表如下:");58 for(int i = 0;i

64 /*

65 * 查询List中是否包含某个元素66 **/

67 public voidtestContains(){68 System.out.println("");69 System.out.println("获取List的第一门课程:");70 Course c1 =(Course) courseToList.get(0);71 System.out.println("课程名称:"+c1.name);72 System.out.println("List是否包含课"+c1.name+":"+courseToList.contains(c1));73

74 /*Course c2 =new Course(c1.id,c1.name);75 System.out.println("根据第一个课程的ID和NAME新建了一个课程C2");76 System.out.println("List是否包含课C2"+c2.name+":"+courseToList.contains(c2));77 System.out.println("虽然两个课程有相同的ID和name,但是是不同的对象,所以第二个新建的课程返回false");*/

78

79 //重写Course的equals方法

80 Scanner console = newScanner(System.in);81 System.out.println("添加一个课程:");82 String name =console.next();83 Course c3 = newCourse();84 c3.name =name;85 System.out.println("List是否包含课C3"+c3.name+":"+courseToList.contains(c3));86 }87

88 public static voidmain(String[] args){89 ListTest lt = newListTest();90 lt.addCourse();91 lt.testFor();92

93 lt.testContains();94 lt.testContainsAll();95 }96 }

View Code

其中Course类如下,类中包含重写后equals方法:

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

20 /*

21 * 重写equals方法22 * 用来比较课程名称是否相同23 **/

24 public booleanequals(Object obj){25 if(this ==obj){26 return true;27 }28 if(obj == null){29 return false;30 }31 if(!(obj instanceofCourse)){32 return false;33 }34 Course c =(Course) obj;35 if(this.name == null){36 if(c.name == null){37 return true;38 }else{39 return false;40 }41 }else{42 if(this.name.equals(c.name)){43 //if(this.name==c.name){

44 return true;45 }else{46 return false;47 }48 }49 }50 }

View Code

输出如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

添加了课程:1-语文

添加了课程:2-数学

添加了课程:3-英语

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

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

for循环课程列表如下:

课程:3-英语

课程:1-语文

课程:2-数学

课程:4-理综

课程:7-地理

课程:8-历史

课程:5-化学

课程:6-生物

获取List的第一门课程:

课程名称:英语

List是否包含课英语:true添加一个课程:

生物

List是否包含课C3生物:true

View Code

三  List的contiansAll方法

查询List中是否包含多个值

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/** 查询List中是否包含多个元素

**/

public voidtestContainsAll(){

Course c1= newCourse();

c1.name= "语文";

Course c2= newCourse();

c2.name= "数学";

Course[] cs1={c1,c2};

System.out.println("课程cs1有课程:"+c1.name+"和"+c2.name);

System.out.println("List是否包含课cs1:"+courseToList.containsAll(Arrays.asList(cs1)));

}

View Code

输出如下:

课程cs1有课程:语文和数学

List是否包含课cs1:true

其中有关于==和equals的使用与区别参考下面另一篇随笔

四  List的indexOf和lastIndexOf方法

indexOf会返回List中匹配元素的键名

1.indexOf会和contains一样遍历List中的元素,

2.直到contains返回true,则返回当前元素的下标,随即停止遍历

3.如果不包含,则返回-1

4.lastIndexOf 使用方法同indexOf,只是从列尾往列头遍历,返回最后一个匹配元素的下标

System.out.println("课程"+c1.name+"第一次出现的下标为:"+courseToList.indexOf(c1));

System.out.println("课程"+c1.name+"最后一次出现的下标为:"+courseToList.lastIndexOf(c1));

输出:

课程英语第一次出现的下标为:0

课程英语最后一次出现的下标为:0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值