Collection接口
1.是List、Set、和Queue接口的父接口
2.定义了可用于操作的List、Set和Queue的方法——增删改查
List
有序可重复---序列
可以精确控制每个元素插入的位置,或删除某个位置的元素
ArrayList是LIst最重要的实现类
ArrayList底层是由数组实现的
增:
1.add(Object o);//添加一个元素,任意类型,到集合中
2.addAll(Collection c);//添加另一个集合到当前集合中
删:
3.clear();//清空集合
4.remove(Object o);//删除集中中的指定元素
5.removeAll(Collection c);//删除两个集合的【交集】
6.retainAll(Collection c);//保留两个集合的【交集】
查:
7.size();//获取当前集合的有效元素个数
8.toArray();//把当前集合中的所有元素转成Object类型数组返回
package collections.collection;
/**
* 备选课程类:
* 方法总结:
* 添加:
* 1、add(e),添加指定元素
* 2、add(index.e),添加指定元素到指定下标准位置
* 3、addAll(e),添加列表到列表中
* 2、addAll(index.e),添加指定列表到指定下标准位置
* 查询:
* 5、size(),获取列表长度
* 6、get(index),获取下标为index的元素
* 修改:
* 7、set(int index,E element),参数说明:1.index指定位置索引(可选择)2.element指定位置要存储的元素
* 删除:
* 8、remove(Object o),参数说明:o要删除的元素对象
* 8、remove(int index),参数说明:index要删除的元素的索引,范围是长度
* 8、removeAll(Collection<?> c) ,要删除的集合(原集合的子集)
*
*
* 知识点:1://集合和数组一样,也有下标
* 2:// 对象存入集合都会变成 Object类型,取出时,需要进行类型转换(类型强转---+(Course))
* 3:如果添加的元素位置<0.或者大于集合长度,会抛出下标越界异常,也就是说,添加的位置只能是第一位到最后一位+1的位置(添加后长度+1)
* *4: Arrays.asList(course),将数组course转为集合
* 5:通过for循环来遍历集合
* *6:通过迭代器来遍历集合:Iterator是一个接口
* *7:通过for each来遍历集合:Iterator是一个接口
*/
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
* @author Administrator
*
*/
public class ListTest {
//List类型的属性
public List coursesToSelect;//用于存放备选课程的容器
public ListTest(){
// List是一个接口,接口不能实例化
// ArrayList是List的实现类,所以新建ArraryList对象时候,会自动实例化属性coursesToSelect
this.coursesToSelect = new ArrayList();
}
/**
* 往容器里(coursesToSelect)中添加课程
*/
public void testAdd(){
// 实例化课程类,通过课程类的构造函数,新建一个课程
Course c1 = new Course("1", "JAVA基础");
//1.add添加方法 add(c1);
coursesToSelect.add(c1);
// 对象存入集合都会变成 Object类型,取出时,需要进行类型转换(类型强转---+(Course))
Course temp = (Course) coursesToSelect.get(0);//集合和数组一样,也有下标
System.out.println("添加了一个课程 "+temp.getId()+":"+temp.getName());
// 结果:添加了一个课程 1:JAVA基础
//可以重复
coursesToSelect.add(c1);
//2、添加元素到指定位置-add(1, c2);
Course c2 = new Course("2","JAVA高级");
coursesToSelect.add(1, c2);
// Course temp2 = (Course) coursesToSelect.get(0);//此时c2会替代c1成为get(0)。变成第一个
Course temp2 = (Course) coursesToSelect.get(1);
System.out.println("添加了一个课程 "+temp2.getId()+":"+temp2.getName());
//3、添加一个列表--addAll()
//创建一个课程数组
Course[] course = {new Course("3","JavaWeb基础"),new Course("4","JavaWeb高级")};
//将数组以列表形式添加到列表中--addAll()方法,添加整个列表,而不是一个元素
coursesToSelect.addAll(Arrays.asList(course));//Arrarys.asList()将参数(数组),转换为列表
Course temp3 = (Course) coursesToSelect.get(2);
Course temp4 = (Course) coursesToSelect.get(3);
System.out.println("添加了两个个课程 "+temp3.getId()+":"+temp3.getName()+" 和 "+temp4.getId()+":"+temp4.getName());
//4、指定位置添加一个列表
Course[] course2 = {new Course("5","Java框架基础"),new Course("6","Java框架高级")};
coursesToSelect.addAll(2,Arrays.asList(course2));
Course temp5 = (Course) coursesToSelect.get(2);
Course temp6 = (Course) coursesToSelect.get(3);
System.out.println("在下标2的位置添加了两个个课程 "+temp5.getId()+":"+temp5.getName()+" 和 "+temp6.getId()+":"+temp6.getName());
}
/**
* 获取(courseToSelect)的元素的方法
* 通过for循环来遍历集合
* @param args
*/
public void testGet(){
//5.获取列表长度 size
int size = coursesToSelect.size();
System.out.println("通过for循环....");
System.out.println("共有"+size+"个可选课程,分别为:");
for (int i = 0; i < size; i++) {
//6、get(index),获取下标为index的元素
Course cr = (Course) coursesToSelect.get(i);
System.out.println("课程:"+cr.getId()+"--"+cr.getName());
}
}
/**
* 迭代器遍历集合List
* @param args
*/
public void testIterator(){
System.out.println("通过迭代器....");
Iterator it = coursesToSelect.iterator();
while(it.hasNext()){
Course cr = (Course) it.next();
System.out.println("课程:"+cr.getId()+"--"+cr.getName());
}
}
/**
* 通过ForEach来遍历集合
* @param args
*/
public void testForEach(){
System.out.println("通过ForEach循环遍历集合...");
for (Object object : coursesToSelect) {//参数:变量+集合,因为元素存入到集合中,会忽略类型,则为Object类型
Course cr = (Course) object;//所以要强转
System.out.println("课程:"+cr.getId()+"--"+cr.getName());
}
}
/**
* 7、修改方法
* @param args
*/
public void testModiy(){
System.out.println("修改");
coursesToSelect.set(4,new Course("7", "修改后的课程"));
}
/**
* 8、删除方法
* 删除下标为4的(修改后的课程)
* @param args
*/
public void testRemove(){
//get方法获取索引为4的元素
Course cr = (Course) coursesToSelect.get(4);
System.out.println("即将删除索引为4的课程:"+cr.getId()+"--"+cr.getName());
coursesToSelect.remove(4);//删除
System.out.println("完成删除操作");
Course cr1 = (Course) coursesToSelect.get(4);
System.out.println("索引为4的课程为:"+cr1.getId()+"--"+cr1.getName());
testForEach();
//删除集合
System.out.println("删除后两位课程");
Course[] courses = {(Course) coursesToSelect.get(4),(Course) coursesToSelect.get(5)};
//数组==》集合
coursesToSelect.removeAll(Arrays.asList(courses));
testForEach();
}
public static void main(String[] args) {
ListTest lt = new ListTest();
lt.testAdd();
System.out.println("-----------------------");
lt.testGet();
System.out.println("-----------------------");
lt.testIterator();
System.out.println("-----------------------");
lt.testModiy();
lt.testForEach();
System.out.println("-----------------------");
lt.testRemove();
System.out.println("-----------------------");
}
}
package collections.collection;
/**
* 课程类
*
*/
public class Course {
private String id;
private String name;
public Course(String id, String name) {
super();
this.id = id;
this.name = name;
}
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;
}
}
网友评论