容器基本知识点

容器

容器,也被称作集合(collection)

泛型

自定义泛型

泛型可以理解为是数据类型的参数化,就是在写程序时不写数据类型,把数据类型作为一个参数传入。

//实现了泛型接口的mc类(虽然可以使用任何字母,但是一般泛型默认使用T,E,V)
class mc<E> {
    Object[] objs = new Object[5];
    public E get (int index) {
        return (E) objs[index];
    }
}

容器中使用泛型

容器本质上是数据组织形式的。因此,为了针对不同类型的数据,容器都使用了泛型。

public class MyCollections {
    List<String> list = new ArrayList<String>();
    Set<String> set = new HashSet<String>();
    Map<String,List<Integer>> map = new HashMap<String,List<Integer>>();
}

Collection接口

所有的容器都要实现Collection接口。Collection接口下面有个List接口还有一个Set接口。

image-20220226122903202

List接口

特点:可重复,有顺序

List接口常用的实现类有三个:ArrayList(底层是数组),LinkList(底层是双向链表),Vector(底层是可以动态增长的线性数组,实现了线程安全)

Map接口

特点:按照**<键,值>的方式存储成对信息**。底层使用Hash算法

Map接口最常用的实现类是HashMap,底层使用哈希表实现。其核心数组结构为Entry数组。每个Entry对象存储了hash,key,value,next四个部分的内容,是个单向链表结构。

得到一个key值后,通过hash算法计算出位置,如果此位置已经有了元素,就进行碰撞处理。

image-20220226152809203

Set接口

Set接口的特点是,无序不可重复。由于无需,则没有索引。因此查找只能采取遍历的方式。

Set的最常用实现类是HashSet类。HashSet的本质其实是一个简化的HashMap。加入新元素的方式也是HashMap的方式,只不过不进行冲突处理。而且value的部分不做考虑。由于key是不能重复的,因此HashSet天然不可重复。

Iterator接口

所有实现了Collection的容器类都有一个Iterator方法用来实现迭代器的功能。

public class MyCollections {
    public static void main(String[] args){
        List<String> list = new ArrayList<String>();
        for(int i = 0; i < 10; ++i){
            list.add("String"+i);
        }
        for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
            String temp = iterator.next();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值