集合自我学习

码云学习:https://gitee.com/zfjcontroller/set-learning

集合

一:集合概念

对象的容器,实现了对对象常用操作,类似于数组功能。

二:和数组的区别

  1. 数组长度固定,集合长度不固定
  2. 数组可以存储基本类型和引用类型,集合只能存储引用类型

三:位置:java.utils.*

Collection 该体系结构的根接口,代表一组对象,称为“集合”

List接口特点:有序,有下标,元素可重复

Set接口特点:无序,无下标,元素不可重复
在这里插入图片描述

Collection父接口

特点:代表一组任意类型的对象,无序,无下标,不可重复

方法:

Boolean add(Object obj)//添加一个对象

Boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中

void clear() //清空此集合所有对象

Boolean contains(Object o)//检查此集合中是否包含o对象

Boolean equals(Object o)//比较此集合是否与指定对象相等

Boolean isEmpty() //判断刺激和是否为空

Boolean remove(Object o)//此集合中移除o对象

int size() //返回此集合中的元素个数

Object[] toArray() //将此集合转换成数组

List子接口

特点:有序,有下标,元素可以重复

方法:

void add(int index,Object o) //在index位置插入元素o

Boolean addAll(int index,Collection c) //将一个集合中的元素添加到此集合中的index位置

Object get(int index)//返回集合中指定位置的元素

List subList(int formIndex,int toIndex)//返回fromIndex和toIndex之间集合元素

List实现类

ArrayList【重点】

源码解析:DEFAULT—CAPACITY=10 默认容量

注意:

如果没有向集合中添加任何元素时,容量0,添加一个元素后容量是10

每次扩容大小是原来的1.5倍

elementData存放元素的数组

size实际元素个数

add()//添加元素

public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
    }

private static int calculateCapacity(Object[] elementData, int minCapacity) {
        if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
            return Math.max(DEFAULT_CAPACITY, minCapacity);
        }
        return minCapacity;
    }

    private void ensureCapacityInternal(int minCapacity) {
        ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
    }
private void ensureExplicitCapacity(int minCapacity) {
        modCount++;

        // overflow-conscious code
        if (minCapacity - elementData.length > 0)
            grow(minCapacity);
    }

数组结构实现,查询块,增删慢

jdk1.2版本,运行效率快,线程不安去

Vector

数组结构实现,查询快,增删慢

jdk1.0版本,运行效率慢,线程安全

LinkedList

链表结构实现,增删快,查询慢

泛型

Java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传递

常见的形式有泛型类,泛型接口,泛型方法

语法:

<T,…> T称为类型占位符,表示一种引用类型

好处:

(1)提高代码的复用性

(2)防止类型转换异常,提高代码安全性

泛型集合

概念:参数化类型,类型安全的集合,强制集合元素的类型必须一致

特点:编译时即检查,而非运行时抛出异常

访问时不必类型转换(拆箱)

不同泛型之间引用不能相互赋值,泛型不存在多态

Set子接口

特点:无序,无下标,元素不可重复

方法:全部继承Collection中的方法

常见的实现类

HashSet[重点]:

基于HashCode实现元素的不重复

当存入元素的哈希码相同时,会调用equals进行queals进行确认,如结果为true,则拒绝后者存入。

TreeSet:

基于排列顺序实现元素不重复

实现leSortedSet接口,对集合元素自动排序

元素对象的类型必须实现Comparable接口,指定排序规则

通过CompareTo方法确定是否为重复元素

Map集合

在这里插入图片描述

Map接口特点:

同于存储任意键值对(key-Value)

键:无序,无下标,不容许重复

值:无序,无下标,容许重复

常用方法:

V put(K key,V value)//将对象存入到集合中,关联键值,key重复则覆盖原值

Object get (Object key) //根据键获取对应的值

Set(K) //返回所有Key

Collection values() //返回包含所有值的Collection集合

Set<Map,Entry<K,v>> //键值匹配Set集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值