java集合【上】

 一、集合的出现原因

        java中已经有数组了,为什么还要集合呢?其实数组是有短板的,数组一旦创建大小固定不变,存放数据的类型单一 ;为了解决这些问题,集合就出现了,首先集合的长度是可变的,并且可以存储任意引用数据类型数据,集合一般都是接口和类和数组数据不同。

集合和数组的区别:

           1.【创建之后】数组的长度是不可变,集合对象的长度可变;

           2.集合只能放引用数据类型数据的,创建时没有泛型指定可以同时存放多种数据类型数据;

           3.数组【创建之前】可以存放任意数据类型数据,但是创建之后,就只能存放声明的一种数据类型。

二、集合体系结构

【以下是在java 常用的几种集合体系】

 三、单列集合

(一)collection接口的介绍

单列集合的顶层接口,定义了单列集合中一些共性的功能,由于不能创建对象,要想使用它就得借助多态创建它的实现类对象,实际开发中常用典型实现类ArrayList来使用。

Collection<E> list = new ArrayList<>();

(二)常用方法

方法名说明
boolean add(E e)添加元素
boolean remove (Object o)从集合中移除指定的元素
void clear ()清空集合中所有的元素
boolean contains (Object o)判断集合中是否包含指定的元素
boolean isEmpty ()判断集合是否为空
int size()获取集合当前状态的长度值

 (二)单列集合的遍历

        1)迭代器【专门对集合进行遍历的接口 】遍历

            获取迭代器的功能:iterator( ):获取iterator类型的迭代器对象

            迭代器的功能:

                hasNext( ):判断下个位置是否有元素,返回boolean类型的值;

                next( ):获取集合位置上的元素,同时移动迭代器指针到下个位置;

                remove( ):删除当前元素;


            1、使用集合对象获取迭代器对象
            2、利用while循环结合迭代器的hasNext和next方法进行遍历即可   

具体代码实现:

public static void method1(ArrayList<Integer> list) {
        //调用迭代器对象
        Iterator<Integer> iterator = list.iterator();
        //while循环判断下一个指针出是否有元素,返回布尔值
        while(iterator.hasNext()) {
            Integer next = iterator.next();
            System.out.println(next);
        }
    }

 2)增强for【foreach】遍历------底层是迭代器遍历

        for(数据类型  变量名  :  集合名) {

}

具体代码实现:

public static void method2(ArrayList<Integer> list) {
        //增强for遍历
        for (Integer ele : list) {
            System.out.println(ele);
        }
    }

3)转换数组遍历

        集合转换为数组:使用toArray( )方法【默认Object数组】

注意:如果方法不传参数,数组长度根据集合长度对应去创建;如果传入数组转换时’长度小于集合长度,系统会根据传入数组的数据类型和集合的长度重新创建一个新数组。

具体代码实现:

public static void method3(ArrayList<Integer> list) {
        //数组法遍历
        //创建一个数组
        Integer[] arr = new Integer[list.size()];
        //将集合转换为数组
        list.toArray(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

四、有序单列集合【List】

1)特点:

                1.有序【按对象进入的顺序保存对象】;

                2.有索引;

                3.元素可重复;

2)List集合的特有方法

方法名说明
void add(int index, E element )指定索引位置插入指定的元素
E remove(int index)删除指定索引处的元素
E set(int index, E element )修改指定索引处的元素
E get(int index)获取指定索引处的元素

注意:实际开发中优先使用特有方法【特有方法相对效率高】

3)特有遍历方式:

        由于有序集合有索引,所以可以使用for循环遍历,跟数组的遍历原理一样

五、有序单列集合的实现类

(一)ArrayList

                ArrayList是List典型实现类,没有自己特有的功能,它的底层采用数组结构构建的实现类集合。

注意:在创建ArrayList集合对象的时候,会维护一个长度为10的Object类型的数组.,如果10个长度不够,会以1.5倍的形式进行扩容。

(二)LinkedList

                LinkedList是List常用实现类集合,底层采用的是双向链表结构构建的,它的特有功能基本上是对集合首尾元素的操作。

常见方法:

方法功能
void addFirst(E e)将指定元素插入到列表的开头
void addLast(E e)将指定元素添加到此列表的结尾
E getFirst( )返回此列表的第一个元素
E getLast( )返回此列表的最后一个元素
E removeFirst( )删除并返回此列表的第一个元素
E removeLast( )删除并返回此列表的最后一个元素
E pop( )从此列表所表示的堆栈处弹出一个元素
void push(E e )将元素推入此列表所表示的堆栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值