Java基础-集合【超全超基础】

本文详细介绍了Java集合框架中的泛型概念,包括如何声明类、方法和继承中的泛型使用,以及泛型约束。还探讨了Iterable接口、Collection接口及其子接口List、Set和Queue,讲解了ArrayList、LinkedList、HashSet、TreeSet和HashMap、TreeMap的实现原理和重要属性。同时,讨论了泛型约束中的通配符和边界,以及Map接口中的K-V存储方式。
摘要由CSDN通过智能技术生成

目录

1. 泛型【相当于标签】

a. 声明类

b. 声明方法

c. 继承

d. 泛型约束

2. Iterable接口

3. collection接口【E元素存储】

A. List接口【不唯一,有序(底层为顺序表)】

a) ArrayList实现类

b) LinkedList实现类

​B. Set接口【唯一,无序】

a) HashSet实现类

​b) TreeSet实现类

c) comparator比较器

 C. Queue接口【队列,FIFO】

4. Map接口【K-V存储】

A. HashMap实现类⭐⭐⭐

a) 基本原理

b) 重要属性(2和0.75)

c) Put数据进HashMap(流程)

 B. TreeMap实现类


开始复习基础啦......

数组:长度确定后不可修改、增删效率低、声明后只能存一种类型。

集合:长度可变、增删效率高、声明后可存多种类型(除非指定泛型)、只能存引用类型。

1. 泛型【相当于标签】

在编译时进行了检查,添加、接收时要使用泛型制定的类型,对元素进行了限制。

a. 声明类

在类名后添加<E>,如class G<E>{},实例化时可指定G<String>,如不声明,则E被当成Object对象-{ 泛型擦除}。

泛型类的泛型类型在创建对象时指定,类中的static方法、属性优先于对象存在,先创建static再有对象,所以静态属性和方法不能使用定义在类上的泛型。

b. 声明方法

并非带泛型的方法都为泛型方法,泛型方法的泛型类型与类的泛型类型无关,即非泛型类也可有泛型方法。

泛型方法的泛型类型在方法调用时指定,所以泛型方法可以为静态方法。

c. 继承

父类指定泛型,子类无需指定,相当于参数类型已确定。父类没指定泛型,还是以class <E>进行声明,子类必须为泛型类。

如存在对象ArrayList<String> A,  ArrayList<Integer> B,ArrayList<Object> C,A、B、C间为并列关系,虽然Object和String间存在继承关系,但作为泛型参数他们无继承关系,不能采用A=B、A=C这种方式进行赋值。

d. 泛型约束

使用通配符“?”号表示匹配任意类型,使用“? extends A”表示匹配类型为A的子类。

* 上界由extends指定:表示该类型必须是指定类型或其子类;

* 下界由super指定:表示该类型必须是指定类型或其父类;

加入通配符后可对List执行遍历、读取(用根类Object接收),不可进行add操作(为了防止乱加,直接给ban掉了)。

2. Iterable接口

ListIterator:继承于Iterator接口,只能用于各种List类型的访问。为解决iterator和List同时对集合操作发生并发修改异常,引入新的迭代器,迭代和添加操作均由ListIterator进行,可以判断next和previous,可进行逆向遍历。 

首先,ArrayList是实现类,其他全为接口。

3. collection接口【E元素存储】

定义了基本的增、删、查、判断方法。equals比较的是内容,"=="比较的是地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值