Java Collection集合

ArrayList与Collection的区别

  1. Collection是接口,ArrayList是实体类
  2. 接口不能自己实例化,实体类可以实例化,类的实例化对象可以用实现的接口接收
  3. ArrayList a = new ArrayList() 可以调用ArrayList所有的方法
  4. Collection a = new ArrayList()   只能调用Collection中有的方法

Collection集合常用方法

boolean add(E e):添加元素;

boolean remove(Object o ):从集合中移除指定的元素;

boolean removeif(Object o):根据条件进行删除;

void clear():清空集合;

boolean contains(Object o):判断集合中是否存在指定元素;

boolean isEmpty():判断集合是否为空;

int size():集合的长度,也就是集合中元素的个数

Collection 集合的遍历

Iterator:迭代器,集合的专用遍历方式

迭代器对象一旦被创建,默认指向集合的0索引处

注:迭代器的泛型需要和集合的泛型保持一致

    public static void main(String[] args) {
        Collection<String> collection = new ArrayList();
        collection.add("w");
        collection.add("s");
        collection.add("z");
        collection.add("d");
        collection.add("s");
        collection.add("a");


//        集合对象.迭代器
        Iterator<String> iterator = collection.iterator();
        //判断当前元素是否有元素可以被取出
//        iterator.hasNext();
        //两个功能:1、取出当前位置的元素 ;2、将迭代器往后移动一个索引
//        iterator.next();

        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

练习:创建一个集合,并使用循环遍历此集合,判断获取的元素是否为w,如果是则删除。

ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("q");
        arrayList.add("w");
        arrayList.add("w");
        arrayList.add("e");
        arrayList.add("r");
        arrayList.add("t");

        for (int i = 0; i < arrayList.size(); i++) {
            String s = arrayList.get(i);
            if ("w".equals(s)){
                arrayList.remove(i);
            }
        }
        System.out.println(arrayList);

此方法的弊端:

删除后,索引自动加1,故跳过了原本的w(1索引),如图所示

修复此错误的方法只需要在arratList.remove(i);下方加上i--即可。

或者使用迭代器的删除方法:remove()

迭代器的删除功能会在删除所在索引后自动进行-1操作。

ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("q");
        arrayList.add("w");
        arrayList.add("w");
        arrayList.add("e");
        arrayList.add("r");
        arrayList.add("t");

        Iterator<String> it = arrayList.iterator();
        while (it.hasNext()){
            String next = it.next();
            if (next.equals("w")){
                it.remove();
            }
        }
        System.out.println(arrayList);

增强for

格式:for(数据类型  s:要遍历的数组或集合){         //s代表循环的集合的每一个元素,自定义名称

                需要执行的语句;

}

ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("w");
        arrayList.add("s");
        arrayList.add("d");
        arrayList.add("s");
        arrayList.add("g");
        arrayList.add("a");

        for(String s : arrayList){
            System.out.println(s);
        }

运行结果:

 注:s只代表第三方变量,无法通过修改s修改到集合中的数据

例子:

ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("w");
        arrayList.add("s");
        arrayList.add("d");
        arrayList.add("s");
        arrayList.add("g");
        arrayList.add("a");

        for(String s : arrayList){
            s = "P";
            System.out.println(s);
        }
        System.out.println(arrayList);

运行结果:

 图解:

 

 练习:

创建一个集合存储学生对象,存储3个学生对象并在控制台遍历。

先创建一个标准Javabean学生类,拥有姓名和年龄属性。

//存学生对象,故泛型写Student
        ArrayList<Student> list = new ArrayList<>();
        Student s = new Student("小林",23);
        Student s2 = new Student("小吴",22);
        Student s3 = new Student("小明",24);

        list.add(s);
        list.add(s2);
        list.add(s3);

        //迭代器
        Iterator<Student> it = list.iterator();
        while(it.hasNext()){
            Student next = it.next();
            System.out.println(next);
        }
        System.out.println("---------------------------");
        //增强for
        for(Student st : list){
            System.out.println(st);
        }

运行结果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值