Java学习19-List、set容器

目录

一.List:

1.List基本介绍:

2.List接口方法:

3.List的三种遍历方式:

4.ArrayList:

(1)ArrayLis的基本介绍:

(2)ArrayList底层结构和源码分析:

5.Vector:

(1)Vector基本介绍:

(2)Vector底层结构与ArrayList的比较:

6.LinkedList:

(1)LinkedList的基本介绍:

(2)LinkedList的底层操作机制:

7.ArrayList和LinkedList的比较:

二.set:

1.基本介绍:

2.遍历Set:

3.HashSet:

(1)HashSet全面说明:

(2)HashSet扩容机制:

4.LinkedHashSet:

(1)基本介绍:

(2)底层机制:


一.List:

1.List基本介绍:

  • List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复。
  • List集合中的每个元素都有其对应的顺序索引,即支持索引。
  • List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

2.List接口方法:

3.List的三种遍历方式:

复制代码
//通过静态方法,对Book对象按照价格升序进行排序
public static void main(String[] args) {
        public static void sort(List list){
            for (int i =0;i<list.size()-1;i++){
                for (int j =0;j<list.size()-1-i;j++){
                   Book book1 = (Book)list.get(j);
                    Book book2 = (Book)list.get(j+1);
                    if(book1.getPrice()>book2.getPrice()){
                        list.set(j,book2);//set方法实现交换
                        list.set(j+1,book2);
                    }

                }
            }
        }
    }

4.ArrayList:

(1)ArrayLis的基本介绍:
  • ArrayList是由数组来实现数据存储的,ArrayList可以加入多个null。
  • ArrayList基本等同于Vector,除了ArrayList是线程不安全的。
(2)ArrayList底层结构和源码分析:

5.Vector:

(1)Vector基本介绍:
  • Vector底层是一个对象数组,Vector是线程同步的,即线程安全。
(2)Vector底层结构与ArrayList的比较:

6.LinkedList:

(1)LinkedList的基本介绍:
  • LinkedList底层实现了双向链表和双端队列。
  • 可以添加任何元素(元素可以重复),包括null。
  • 线程不安全,没有实现同步。
(2)LinkedList的底层操作机制:

7.ArrayList和LinkedList的比较:

二.set:

1.基本介绍:

set接口是无序的(添加和取出的顺序不一致),没有索引。不允许重复元素,所以最多包含一个null。

2.遍历Set:

复制代码
        //迭代器
        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println(obj);
        }
        //增强for
        for (Object obj:set){
            System.out.println(obj);
        }
        set.remove(null);

3.HashSet:

(1)HashSet全面说明:
  • HashSet实现了Set接口,实际上是HashMap(数组+链表+红黑树)。
  • 可以存放null,但是只能有一个null。(不能有重复元素、对象)
  • HashSet不保证元素是有序的,取决于Hash后,再确定索引的结果。
(2)HashSet扩容机制:

4.LinkedHashSet:

(1)基本介绍:
  • LinkedHashSet是HashSet的子类,LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表。
  • LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的(有序的)。
  • LinkedHashSet不允许添加重复元素。
(2)底层机制:
相关推荐
寒秋花开曾相惜1 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
是翔仔呐1 小时前
第11章 显示外设驱动:I2C协议OLED屏、SPI协议LCD屏字符/图片/中文显示
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
_李小白1 小时前
【AI大模型学习笔记之平台篇】第五篇:Trae常用模型介绍与性能对比
人工智能·笔记·学习
承渊政道2 小时前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
AI-Ming2 小时前
程序员转行学习 AI 大模型: 踩坑记录:服务器内存不够,程序被killed
服务器·人工智能·python·gpt·深度学习·学习·agi
m0_716765232 小时前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
2501_945318492 小时前
零基础学习AI的选型指南:CAIE认证与编程型AI认证如何取舍
人工智能·学习
承渊政道2 小时前
【优选算法】(实战推演模拟算法的蕴含深意)
数据结构·c++·笔记·学习·算法·leetcode·排序算法
Keep learning!3 小时前
PCA主成分分析学习
学习·算法
浮白载笔的夜晚3 小时前
【科普向】模拟电路(Analog Circuits)与射频电路(RF Circuits)的区别
学习