JAVA容器概论

本文深入探讨JAVA容器,包括List接口、Iterator、Set和Map接口的详细解析,阐述了数组与集合的区别和集合的宏观结构。通过示例展示了Collection接口的常用方法如add、remove、size等,并讲解了集合的遍历方式。同时,文章阐述了数据结构的逻辑结构(如线性表、链表)与物理结构(如紧密结构、跳转结构)之间的关系,以及数组和集合在存储和操作上的优缺点。
摘要由CSDN通过智能技术生成

JAVA容器系列专题

【JAVA容器概论】
【JAVA容器-List接口容器详解】
【JAVA容器-迭代器Iterator详解】
【JAVA容器-Set接口容器详解】
【JAVA容器-Map接口容器详解】
【JAVA容器演进及应用(含对Disruptor的浅解)】

数据结构

就是在计算机的缓存,内存,硬盘 如何组织管理数据的。重点在结构上,是按照什么结构来组织管理我们的数据。

数据结构分为:
(1)逻辑结构 : --> 思想上的结构 --> 卧室,厨房,卫生间 —> 线性表(数组,链表),图,树,栈,队列
(2)物理结构 : --> 真实结构 --> 钢筋混凝土+牛顿力学 ------> 紧密结构(顺序结构),跳转结构(链式结构)

逻辑结构和物理结构的关系

线性表逻辑结构中,对应的物理结构为【紧密结构】的典型就是【数组】:
在这里插入图片描述

线性表逻辑结构中,对应的物理结构为【跳转结构】的典型就是【链表】:
在这里插入图片描述

集合

引入原因

  1. 数组,集合都是对多个数据进行存储操作的,简称为容器。
    PS:这里的存储指的是内存层面的存储,而不是持久化存储(.txt,.avi,.jpg,数据库)。

  2. 【数组】特点:
    (1)数组一旦指定了长度,那么长度就被确定了,不可以更改。int[] arr = new int[6];
    (2)数组一旦声明了类型以后,数组中只能存放这个类型的数据。数组中只能存放同一种类型的数据。int[] arr,String[] s,double[] d…

  3. 【数组】缺点:
    (1)数组一旦指定了长度,那么长度就被确定了,不可以更改。
    (2)删除,增加元素 效率低。
    (3)数组中实际元素的数量是没有办法获取的,没有提供对应的方法或者属性来获取
    (4)数组存储:有序,可重复 ,对于无序的,不可重复的需求,数组不能满足要求。

集合宏观结构

在这里插入图片描述

Collection接口

常用方法

增加:add(E e) addAll(Collection<? extends E> c)
删除:clear() remove(Object o)
查看:iterator() size()
判断:contains(Object o) equals(Object o) isEmpty()

public class TestCollection {
    //这是main方法,程序的入口
    public static void main(String[] args) {
        //创建对象:接口不能创建对象,利用实现类创建对象:
        Collection col = new ArrayList();
        //调用方法:
        //集合有一个特点:只能存放引用数据类型的数据,不能是基本数据类型
        //基本数据类型自动装箱,对应包装类。int--->Integer
        col.add(18);
        col.add(12);
        col.add(11);
        col.add(17);
        System.out.println(col);
        List list = Arrays.asList(new Integer[]{11, 15, 3, 7, 1});
        col.addAll(list);//将另一个集合添加入col中
        System.out.println(col);
        //col.clear();清空集合
        System.out.println(col);
        System.out.println("集合中元素的数量为:"+col.size());
        System.out.println("集合是否为空:"+col.isEmpty());
        boolean isRemove = col.remove(15);
        System.out.println(col);
        System.out.println("集合中数据是否被删除:"+isRemove);
        Collection col2 = new ArrayList();
        col2.add(18);
        col2.add(12);
        col2.add(11);
        col2.add(17);
        Collection col3 = new ArrayList();
        col3.add(18);
        col3.add(12);
        col3.add(11);
        col3.add(17);
        System.out.println(col2.equals(col3));
        System.out.println(col2==col3);//地址一定不相等  false
        System.out.println("是否包含元素:"+col3.contains(117));
    }
}

集合遍历方式

public class TestQuery {
    //这是main方法,程序的入口
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(18);
        col.add(12);
        col.add(11);
        col.add(17);
        col.add("abc");
        col.add(9.8);
        //对集合遍历(对集合中元素进行查看)
        //方式1:普通for循环,不可用,因为不能通过索引获取到其中的元素
        /*for(int i= 0;i<col.size();i++){
            col.
        }*/
        //方式2:增强for循环
        for(Object o:col){
            System.out.println(o);
        }
        System.out.println("------------------------");
        //方式3:iterator()
        Iterator it = col.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值