集合(容器)-List接口及实现类

容器的特征:①数据长度可变;②数据保存方式不同。

集合体系概述:JAVA的集合框架是由很多接口、抽象类、具体类组成。都位于java.util包中。

Java中集合类中默认可以存储任意数据类型,Java中的集合提供泛型机制,在定义时最好为集合提供一个明确的类型。(存在转型问题)

List接口及实现类
①ArrayList:

长度可变的数组;

在内存中分配连续的内存空间;

遍历元素和查询元素效率较高。

方法:

boolean add(E e);

容器末尾添加元素,若容器已满,则对容器进行扩容处理,新容量是原来的1.5倍,数组复制,创建新数组。
void add(int index,E e);

容器指定位置添加元素
boolean addall(Collection<? extends E>c);

添加单列集合
void clear();

清空容器;
boolean contains(Object o);

判断是否包含指定元素;
E get(int index);

返回列表指定位置元素;
int indexOf(Object o);

返回o首次出现位置索引
boolean isEmpty();

返回容器是否为空
int lastIndexOf(Object o);

返回容器出现o最后一次索引

②LinkedList:

链表存储方式(内存位置随机分配);

插入、删除元素效率较高;

查询效率较低。(需遍历容器)

③Vector:

底层实现是数组,但线程安全

List接口集合迭代

①for循环遍历(缺点:删除元素时下一个元素会自动跑到被删除元素位置)

②增强for循环遍历(缺点:不允许在集合里删除元素)

③迭代器遍历

④listIterator


迭代器遍历

获得迭代器对象

Iterator<String>iterator=list.iterator();

使用迭代器遍历容器

java 复制代码
package ColleationDemo;

import java.util.ArrayList;
import java.util.Iterator;

public class List {
    public static void main(String[] args) {
        ArrayList<String> arr=new ArrayList<>();
        arr.add("a");
        arr.add("b");
        arr.add("d");
        arr.add("r");
        arr.add("a");
        arr.add("l");
        Iterator<String>it=arr.iterator();
        while(it.hasNext())
        {
            String s= it.next();
            System.out.println(s);
        }
    }
}

注意:删除时使用迭代器中的remove(iterator.remove());


listIterator(注:需满足list接口的集合类)

方法:

hasnext()

next()

previous()

hasPrevious()

hasPrevious(int index)

相关推荐
阿让啊1 小时前
C语言strtol 函数使用方法
c语言·数据结构·c++·单片机·嵌入式硬件
superlls4 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
Ripple123126 小时前
数据结构:顺序表与链表
数据结构·链表
一个响当当的名号6 小时前
B树,B+树,B*树(无代码)
数据结构·b树
古译汉书8 小时前
嵌入式铁头山羊stm32-ADC实现定时器触发的注入序列的单通道转换-Day26
开发语言·数据结构·stm32·单片机·嵌入式硬件·算法
野犬寒鸦8 小时前
力扣hot100:相交链表与反转链表详细思路讲解(160,206)
java·数据结构·后端·算法·leetcode
GalaxyPokemon9 小时前
LeetCode - 1089. 复写零
数据结构
失散139 小时前
分布式专题——1.2 Redis7核心数据结构
java·数据结构·redis·分布式·架构
zzzsde10 小时前
【数据结构】强化训练:从基础到入门到进阶(1)
数据结构
奔跑吧 android10 小时前
【linux kernel 常用数据结构和设计模式】【数据结构 3】【模拟input子系统input_dev和input_handler之间的多对多关系】
linux·数据结构·input·kernel·input_dev·input_handler·input_handle