Java笔记----集合概览

偷了两天懒,把前面的回顾一下,顺便记一记,嘿嘿。

一、集合框架概述

1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器

  • 此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中

2.1 数组在存储多个数据方面的特点: .

  • 一旦初始化以后,其长度就确定了.
  • 数组一旦定义好,数组的类型也就确定了。我们也就只能操作指定类型的数据了。
    比如: String[] arr;int[] arr1;0bject[] arr2;

2.2 数组在存储多个数据方面的缺点:

  • 一旦初始化以后,其长度就不可修改。
  • 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率不高。
  • 获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用。
  • 数组存储数据的特点:有序可重复。对于无序、不可重复的需求,不能满足。
二、集合框架

/–Collection接口:单列集合,用来存储一个个对象

  • List接口:存储有序的、可重复的数据 -->"动态"数组

ArrayList ,LinkedList ,Vector

  • Set接口:存储无序的、不可重复的数据

HashSet,LInkedList,TreeSet

/–Map接口:双列集合,用来存储一对(key,value)数据

HashMap,LinkedHashMap,HashTable,Properties

三、Collection接口常用方法
  • add(Object e):将元素e添加到集合中
  • size():获取添加元素的个数
  • addAll(Collection col1):将col1集合中的元素添加到当前集合中
  • clear():清空集合元素
  • isEmpty(Collection obj):判断当前集合是否为空

以下方法需要重写元素所在类的equals(),不重写则默认使用Object中的equals(),就是“==”

  • contains(Object o):判断当前集合是否包含o
  • containsAll(Collection col):判断形参col中的所有元素是否都在当前集合中
  • remove(Object obj) 从当前集合中移除obj元素
  • removeAll(Collection col) 从当前集合中移除col中所有的元素。注意:没有新建集合,直接修改当前集合
  • retainAll(Collection col):获取当前集合和col的共同元素,直接修改当前集合
  • equals(Object obj):判断当前集合与形参 集合 元素都相同,注意创建的对象是否有序问题
  • hashCode():返回当前对象的hash值
四、集合元素遍历----迭代器、增强for循环

增强for循环内部也是维护的一个迭代器。
调用集合的iterator(),返回一个迭代器,然后使用以下方法。

  • hasNext():下一个位置上有无元素
  • next():指针下移,返回当前位置上的元素
  • remove():删除元素,Iterator对象中的remove方法,不是集合对象中的remove方法
@Test
    public void test1() {
        Collection col = new ArrayList();
        col.add("aa");
        col.add(123);
        col.add(789);
        col.add(4560);

        //for(集合中元素的类型 局部变量 :集合对象)
        //内部仍然调用了迭代器
        for (Object obj : col) {
            System.out.println(obj);
        }
    }
@Test
    public void IteratorTest() {

        Collection col = new ArrayList();
        col.add("aa");
        col.add(123);
        col.add(789);
        col.add(4560);

        Iterator iterator = col.iterator();

//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        报异常 NoSuchElementException
//        System.out.println(iterator.next());

        //方式一:不推荐
//        for (int i = 0; i < col.size(); i++) {
//            System.out.println(iterator.next());
//        }
        //方式二:推荐
        //hasNext():下一个位置上有无元素
        //next():指针下移,返回当前位置上的元素
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        //错误方式一:跳着打印,最后报异常 NoSuchElementException
        Iterator iterator1 = col.iterator();
        while ((iterator.next()) != null) {
            System.out.println(iterator.next());

        //错误方式二:始终输出第一个,停不下来
        while (col.iterator().hasNext()) {//每次调用都会返回一个新的Iterator对象
            System.out.println(col.iterator().next());
        }
        }

        //remove() --如果还未调用next()或在上一次调用next方法之后已经调用了remove方法,
        //再调用remove都会报illegalStateException.
        Iterator iterator2 = col.iterator();
        while (iterator2.hasNext()){
            Object obj = iterator2.next();
            if("aa".equals(obj)){
                iterator2.remove();
            }
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值