美文网首页
JAVA中List接口的使用方法:增删改查

JAVA中List接口的使用方法:增删改查

作者: 虫yu | 来源:发表于2018-11-14 16:47 被阅读0次
package com.collection;

/**
 * 课程类
 * @author my-mac
 *
 */
public class Course {
    public String id;
    public String name;
    
    public Course() {
        // TODO Auto-generated constructor stub
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        if(id == ""){
            System.out.println("请输入id");
        }else{
            this.id = id;
        }
    }

    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        if(name == ""){
            System.out.println("请输入name");
        }else{
            this.name = name;
        }
    }
 
    public Course(String id, String name){
        this.setId(id);
        this.setName(name);
    }
}
package com.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * 备选课程类
 * @author my-mac
 *
 */
public class ListTest {
    
    public List courseToSelect;// 存放备选课程的List
    
    public ListTest(){
        // List是一个接口,不能直接将它实例化
        this.courseToSelect = new ArrayList();
    
    }
    
    public void testAdd(){
        Course cr1 = new Course("1", "数据结构");
        courseToSelect.add(cr1);
        Course temp = (Course)courseToSelect.get(0);
        System.out.println("添加了课程:" + temp.id + ":" + temp.name);
        
        Course cr2 = new Course("2", "C语言");
        courseToSelect.add(0, cr2);
        Course temp2 = (Course)courseToSelect.get(0);
        System.out.println("添加了课程:" + temp2.id + ":" + temp2.name);
        
        courseToSelect.add(cr1);
        Course temp0 = (Course)courseToSelect.get(2);
        System.out.println("添加了课程:" + temp0.id + ":" + temp0.name);
        
        // int[] num = {1,2,3};
        // 这里的数组声明定义就像:int[] num = {1,2,3};
        Course[] course = {new Course("3", "离散数学"), new Course("4", "汇编语言")};
        courseToSelect.addAll(Arrays.asList(course));
        Course temp3 = (Course)courseToSelect.get(3);
        Course temp4 = (Course)courseToSelect.get(4);
        System.out.println("添加了两门课程:" + temp3.id + ":" + temp3.name + ", " + temp4.id + ":" + temp4.name);
        
        Course[] course2 = {new Course("5", "高等数学"), new Course("6", "计算机英语")};
        courseToSelect.addAll(2, Arrays.asList(course2));
        Course temp5 = (Course)courseToSelect.get(2);
        Course temp6 = (Course)courseToSelect.get(3);
        System.out.println("添加了两门课程:" + temp5.id + ":" + temp5.name + ", " + temp6.id + ":" + temp6.name);
    }
    
    /**
     * 取得List中的元素方法
     * @param args
     */
    public void testGet(){
        int size = courseToSelect.size();
        for (int i = 0; i <size; i++) {
            Course temp = (Course)courseToSelect.get(i);
            System.out.println("第"+ i +"门课程:" + temp.id + ":" + temp.name);
        }
    }
    
    /**
     * 通过迭代器来遍历List
     * 注意:迭代器是用来遍历元素的,不具备存储元素的功能
     * 它是依赖某个集合而存在的,本身不能独立存在
     * @param args
     */
    public void testIterator(){
        Iterator it = courseToSelect.iterator();
        System.out.println("有如下待选课程(通过迭代器访问):");
        while (it.hasNext()) {
            Course cr = (Course) it.next();
            System.out.println("课程:" + cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 通过for each方法访问元素
     * 它相当于迭代器的简便写法
     * @param args
     */
    public void testForEach(){
        System.out.println("有如下待选课程(通过for each访问):");
        for (Object object : courseToSelect) {
            Course cr = (Course) object;
            System.out.println("课程:" + cr.id + ":" + cr.name);
        }
    }
    
    /**
     * 修改 List中的元素
     * @param args
     */
    public void testModify(){
        Course cr = (Course) courseToSelect.set(4, new Course("7", "毛概"));
        System.out.println("被修改课程:" + cr.id + ":" + cr.name);
    }
    
    /**
     * 删除 List中的元素
     * @param args
     */
    public void testRemove() {
        Course cr = (Course) courseToSelect.get(4);
        // System.out.println("将要被删除的课程:" + cr.id + ":" + cr.name);
        // courseToSelect.remove(cr);
        // courseToSelect.remove(4);
        System.out.println("将要被删除的课程是4和5位置上的课程:");
        Course[] crs = {(Course) courseToSelect.get(4), (Course) courseToSelect.get(5)};
        // 从一个集合删除另一个集合中的元素
        courseToSelect.removeAll(Arrays.asList(crs));
        System.out.println("已删除!");
        testForEach();
    }
    
    /**
     * 往List中添加一些奇怪的东西
     * 报错:Exception in thread "main" java.lang.ClassCastException: 
     * java.lang.String cannot be cast to com.collection.Course
     * at com.collection.ListTest.testForEach(ListTest.java:88)
     * at com.collection.ListTest.main(ListTest.java:139)
     * @param args
     */
    public void testType() {
        System.out.println("能否往List中添加一些奇怪的东西呢?");
        courseToSelect.add("我不是课程,只不过是一个字符串罢了~");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ListTest It = new ListTest();
        It.testAdd();
        It.testGet();
        It.testIterator();
        It.testForEach();
        It.testModify();
        It.testForEach();
        It.testRemove();
        It.testType();
        It.testForEach();
    }

}

testAdd() testGet() testIterator() testForEach() testRemove() testType()

相关文章

网友评论

      本文标题:JAVA中List接口的使用方法:增删改查

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