Java集合

List集合

特点:有序,可重复,有索引

  • ArrayList

  • LinkedList

List集合特有方法

  • List集合因为支持索引,所以多了很多与索引有关的方法,Collection的功能List也都继承了

package itheima.demo.List;
​
import java.util.List;
import java.util.ArrayList;
​
​
public class List1 {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();//经典代码
        //添加数据
        names.add("张三");
        names.add("李四");
        names.add("王五");
        System.out.println(names);
        //在第三个位置插入”赵六”
        names.add(2,"赵六");
        //删除李四
        names.remove("李四");
        //把王五改为哈哈
        names.set(2,"哈哈");
        System.out.println(names);
        
    }
    
}

List集合支持的遍历方式

  • for 循环(List集合有索引)

        //for循环
        for (int i = 0; i < names.size(); i++) {
            System.out.println(names.get(i));
        }
        //迭代器
        Iterator<String> iterator = names.iterator();
        while (iterator.hasNext()) {
            String name = iterator.next();
            System.out.println(name);
        }
        //增强for
        for (String name : names) {
            System.out.println(name);
        }
        //Lambda表达式
        names.forEach(name-> System.out.println(name));

ArrayList LinkedList 区别

底层采用的数据结构不同,应用场景不同

数据结构:存储,组织数据的方式

ArrayList的底层原理

  • ArrayList底层是基于数组存储数据的

  • LinkedList底层是基于链表存储数据的

数组特点:

  • 查询速度快,根据索引查询数据块

  • 增删数据效率低,可能需要把后面很多数据进行前移

LinkedList的底层原理

链表的特点:

  • 链表中的数据是一个一个独立的结点组成的,结点在内存中不连续,每个结点包含数据值和下一个结点的位置

  • 查询慢,无论查询哪个数据都要从头开始寻找

  • 链表增删相对快

  • 基于双链表实现

  • 对首尾元素进行增删查改的速度极快

LinkedList新增了很多首尾操作的特有方法

LinkedList应用场景之一,可以用来设计队列

package itheima.demo.List;
​
import java.util.LinkedList;
​
public class List2 {
    public static void main(String[] args) {
        //LinkedList做一个队列对象
        LinkedList<String> queue = new LinkedList<>();
        //入队
        queue.addLast("张三");
        queue.addLast("李四");
        queue.addLast("王五");
        System.out.println(queue);
        //出队
        queue.removeFirst();
        System.out.println(queue);
    }
}

LinkedList应用场景之一,可以用来设计栈

package itheima.demo.List;
​
import java.util.LinkedList;
​
public class List3 {
    public static void main(String[] args) {
        LinkedList<String> stack = new LinkedList<>();
        //压栈
        stack.push("张三");
        stack.addFirst("李四");
        stack.addFirst("王五");
        System.out.println(stack);
        //出栈
        stack.removeFirst();
        stack.pop();
        System.out.println(stack);
​
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值