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

原创 2016年08月31日 10:14:06

一、集合

集合分为两种集合,一种是单列集合(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对象的时候才生效的。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员 知识点总结-Java泛型

---------------------- ASP.Net+Android+IOS">http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发...

JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程.]

类的继承 Java只支持单继承,不允许多重继承  - 一个子类只能有一个父类  - 一个父类可以派生出多个子类    子类继承了父类,就继承了父类的方法和属性。  在子类中,可以使用父...

Java 泛型知识点

1、在你创建参数化类型的一个实例时,编译器会为你负责转型操作,并且保证类型的正确性。泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。示例: public cla...
  • json_it
  • json_it
  • 2017年07月02日 22:28
  • 109

黑马程序员——Java泛型知识点

一、Java没有泛型之前

android中的重要java知识点回顾2(内省、注解、泛型、代理类、动态类、AOP框架等等)

------- android培训、java培训、期待与您交流! ---------- 第29节 内省_JavaBean讲解 JavaBean是一个特殊的Java类 方法打头一定要是get,或者set...

JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

http://blog.csdn.net/johnstrive/article/details/50601534 版权声明:转载请附链接,就这个要求。 目录...

JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

类的继承Java只支持单继承,不允许多重继承 - 一个子类只能有一个父类 - 一个父类可以派生出多个子类 子类继承了父类,就继承了父类的方法和属性。 在子类中,可以使用父类中定义的方法和属...

java知识点之泛型

泛型是JDK1.5以后出现的新特性,用于解决安全问题,是一个类型安全机制。泛型可以将运行时期可能抛出的ClassCastException异常转移到编译时期,方便程序员直接在编写代码时解决潜在问题。且...

Java泛型知识点整理

泛型的最大好处是避免了类转化异常()
  • pengkv
  • pengkv
  • 2014年05月27日 15:53
  • 730

Java中的泛型_Effective Java 2.0_Item 1知识点

什么是泛型Java泛型(Generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter),它们也被称为参数化类型(parameterized ty...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java常用到的知识点总结之集合、泛型
举报原因:
原因补充:

(最多只允许输入30个字)