美文网首页
java中的集合框架二:Collection(ArrayList

java中的集合框架二:Collection(ArrayList

作者: 在努力中 | 来源:发表于2018-05-29 13:23 被阅读0次

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;
    }
    
    
}

相关文章

网友评论

      本文标题:java中的集合框架二:Collection(ArrayList

      本文链接:https://www.haomeiwen.com/subject/xdaojftx.html