转自:https://www.imooc.com/video/3731
仅供个人学习记录,侵删
一 回顾下Collection
二 List的contains
查询List中是否包含某个值
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方法:
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
输出如下:
添加了课程: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中是否包含多个值
/** 查询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