List、Set【hash】及其数据结构、Collections(addAll()方法;shuffle()方法;sort()方法)

本文深入探讨了Java集合框架中的List和Set接口,详细讲解了List集合的实现类如ArrayList和LinkedList,以及Set接口的实现如HashSet和LinkedHashSet。内容涵盖了数组、红黑树、hashCode原理、不可重复存储原因、自定义排序规则以及Collections的addAll(), shuffle()和sort()方法的使用。" 138549366,10914745,Linux运维基础面试知识点详解,"['运维', 'Linux', '服务器管理', '面试准备', '系统监控']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

在这里插入图片描述

红黑树

在这里插入图片描述

List集合

* java.util.List 接口 extends Collection接口
* List接口特点:
    1.有序的集合,存储元素和去除元素的顺序是一致的(存储123 取出123)
    2. 有索引,包含了一些带索引的方法
    3. 允许存储重复的元素

* List接口中带索引的方法(特有)
    - public void add(int index, E element): 将指定的元素,添加到该集合中指定的位置上。
    - public E get(int index): 返回集合中指定位置的元素
    - public E remove(int index): 移除列表中指定位置的元素,返回的是被移除的元素。
    - public E set(int index, E element): 用指定元素替换集合中指定位置的元素,返回值是更新前的元素。
* 注意:
    操作索引的时候,一定要防止索引越界异常。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Demo01List {
   
    public static void main(String[] args) {
   
        //创建一个List集合对象,(使用多态)
        List<String> list = new ArrayList<>();
        //使用add方法往集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
        //打印集合
        System.out.println(list); //[a, b, c, d, a]
        /*
        以上结果说明,重写了toString方法,以致打印的不是地址值
        List集合允许存储重复元素
         */

// public void add(int index, E element): 将指定的元素,添加到该集合中指定的位置上。
        //在c和d之间添加一个itheima
        list.add(3, "itheima");
        System.out.println(list); //[a, b, c, itheima,d, a]

// public E remove(int index): 移除列表中指定位置的元素,返回的是被移除的元素。
        //移除元素
        String removeE = list.remove(2);
        System.out.println("被移除的元素:" + removeE);// 被移除的元素:c
        System.out.println(list); //[a, b, itheima, d, a]

// public E set(int index, E element): 用指定元素替换集合中指定位置的元素,返回值是更新前的元素。
        //把最后一个a,替换为A
        String setE = list.set(4, "A");
        System.out.println("被替换的元素:" + setE); //被替换的元素:a
        System.out.println(list);//[a, b, itheima, d, A]
        System.out.println("==========================");
        //List集合遍历有3种方式
        //使用普通的for循环
        for (int i = 0; i < list.size(); i++) {
   
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("==========================");

        //使用迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
   
            String s = it.next();
            System.out.println(s);
        }
        System.out.println("=========================");

        //使用增强for循环
        for (String s : list) {
   
            System.out.println(s);
        }
    }
}

List集合的一些实现类

* java.util.LinkedList集合 implements List接口
* LinkedList集合的特点:
    1.底层是一个链表结构:查询慢,增删快
    2.里边包含了大量操作首尾元素的方法
    注意:使用LinkedList集合特有的方法,不能使用多态

    - public void addFirst(E e):将指定元素插入此列表的开头。
    - public void addLast(E e):将指定元素添加到此列表的结尾。
    - public void push(E e):将元素推入此列表所表示的堆栈。

    - public E getFirst():返回此列表的第一个元素。
    - public E getLast():返回此列表的最后一个元素。

    - public E removeFirst():移除并返回此列表的第一个元素。
    - public E removeLast():移除并返回此列表的最后一个元素。
    - public E pop():从此列表所表示的堆栈处弹出一个元素。

    - public boolean isEmpty():如果列表不包含元素,则返回true。
        
import java.util.LinkedList;

public class Demo02LinkedList {
   
    public static void main(String[] args) {
   
        show03();
    }
    /*
        - public E removeFirst():移除并返回此列表的第一个元素。
        - public E removeLast():移除并返回此列表的最后一个元素。
        - public E pop():从此列表所表示的堆栈处弹出一个元素。
     */
    private static void show03() {
   
        //创建LinkList集合对象
        LinkedList<String> linked = new LinkedList<>();
        //使用add方法往集合中添加元素
        linked.add("a");
        linked.add("b");
        linked.add("c");
        System.out.println(linked); //[a,b,c] 

        String first = linked.removeFirst();
        //String first = linked.removeFirst();
        System.out.println("被移除的第一个元素:"+first);//被移除的第一个元素:a
        String last = linked.removeLast();
        System.out.println("被移除的最后一个元素:"+last); //被移除的最后一个元素:c
        System.out.println(linked); //[b]
    }

    /*
        - public E getFirst():返回此列表的第一个元素。
        - public E getLast():返回此列表的最后一个元素。
     */
    private static void show02() {
   
        //创建LinkList集合对象
        LinkedList<String> linked = new LinkedList<>();
        //使用add方法往集合中添加元素
        linked.add("a");
        linked.add("b");
        linked.add("c");

        //linked.clear();//清空集合中的元素后,再获取集合中的元素会抛出异常NoSuchElementException,

        if(!linked.isEmpty()) {
     //如果不是空的集合才获取,是空的就不获取了,(提高安全性)
            String first = linked.getFirst();//获取列表中第一个元素
            System.out.println(first); //a
            String last = linked.getLast();//获取列表中的最后一个元素
            System.out.println(last); //c 
        }
    }

    /*
        - public void addFirst(E e):将指定元素插入此列表的开头。
        - public void addLast(E e):将指定元素添加到此列表的结尾。
        - public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值