java常用到的知识点总结之集合、泛型

一、集合
集合分为两种集合,一种是单列集合(Collection),另外一种是双列集合(Map)。
1.单列集合:
单列集合Collection简单继承关系:

首先我们从左向右看:

List集合:有存储顺序,可以重复。

ArrayList集合:ArrayList集合底层是数组实现的。
特点:查询快,增删慢,线程不安全。

LinkedList集合:LinkedList集合底层是链表结构的。
特点:查询慢,增删快,线程不安全。

Vector集合:Vector集合底层也是数组实现。
特点:查询、增删都慢,但是线程安全。

List集合常用方法总结:
boolean add(E e):将指定元素添加到集合的尾部。
void add(int index,E element):将指定的元素插入集合中的指定位置。
boolean addAll(Collection<? extends E> c):将Collection集合中的所有元素添加到集合的尾部。
void clear():移出集合中的所有元素。
boolean contains(Object o):判断集合中是否包含指定元素,判断根据equals方法进行判断。
E get(int index):获取集合中指定位置的元素。
E remove(int index):移除集合中的指定位置的元素。
int size():获取集合中元素的个数。
Object[] toArray():将集合转换成数组。

   

   Set集合:无存储顺序,不可重复。

   HashSet集合:底层是哈希表实现的,存储速度快,线程不安全。

当向HashSet中添加一个元素时,会先使用元素的hashCode方法和之前的元素进行判断hashCode值是否相等,若不相等,添加进去,若相等,则再使用equals方法和之前的元素进行判断,所相等不添加,若不相等则添加进集合。

LinkedHashSet集合:底层是链表结构。线程不安全。

TreeSet集合:默认会对集合中元素进行自然排序,由于需要排序 性能和HashSet相比较差。


2.双列集合:Map集合。

Map集合继承结构:


Map集合也称为键值对集合,其中维护了键和值,我们可以通过键来找到指定的值,其中键不可以重复,值可以重复。

HashMap集合:线程不安全,存取速度快,底层是哈希表实现。键和值都可以存储null值。

TreeMap集合:线程不安全,底层是红黑树(二叉树),它会自动对键进行排序。

HashTable集合:线程安全,底层是哈希表,键和值都不可以为null值。

二、泛型

首先来谈谈泛型的好处:将运行时异常提升到了编译期,明确了数据的类型不用做强制类型转换,

泛型的几种书写格式:前后泛型一定要一致,如前面写了泛型后面可以不用写,或者后面写了前面可以不用写。

ArrayList<String> list1 = new ArrayList<>();//true
ArrayList list2 = new ArrayList<String>();//true
//注意这种是错误的
//ArrayList<> list2 = new ArrayList<String>();
//ArrayList<String> list3 = new ArrayList<Object>();//false
//ArrayList<Object> list4 = new ArrayList<String>();//false


泛型方法的定义:

//定义一个参数类型和返回值类型相同的泛型方法

public <T> T methodName(T t){

return t;

}


泛型类的定义:在类上定义了泛型,在类中就可以使用泛型。

class 类名<自定义的泛型>{

}

class Person<T>{

}

泛型接口的定义:和泛型类相似。

interface 接口名 <自定义的泛型>{

}


interface MyInter<T>{

}

注意事项:泛型是在new对象的时候才生效的。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值