Java集合和泛型

Java集合和泛型

集合框架

--

集合按照储存结构分为两大类:Collection集合和Map集合。这两者是Java集合框架的根接口,这两个接口又包含了一些子接口或者实现类。

--

Collection接口主要掌握其子接口:List和Set接口。

一、List接口特征

​ ·1、List接口继承自Collection接口。

​ ·2、有序的集合,储存和取出元素的顺序相同。

​ ·3、允许储存重复的元素

​ ·4、有索引,允许使用普通的for循环遍历。

二、Set接口特征

​ ·1、Set接口继承自Collection接口。

​ ·2、无序的集合。

​ ·3、不允许储存相同的元素

​ 4、没有索引,不能使用普通的for循环遍历。

Collection接口主要方法和功能描述

1、boolean add(E e) 将给定对象添加到当前集合

2、void clear() 清空集合中 所有的元素

3、Iterator iterator() 返回此Collection的元素上进行迭代的迭代器

4、boolean remove(E e) 将给定对象在当前集合中删除

5、boolean contains(E e) 判断当前集合中是否包含 给定对象

6、boolean isEmpty(E e) 判断 当前集合是否为空

7、int size() 返回集合中的元素个数

8、Object[ ] toArray() 把集合中的元素储存到数组中

Collection接口无法实例化,也就无法创建对象,故一般通过多态使用Collection接口的子类来创建集合容器:

语法: Collection coll = new ArrayList();

或者直接使用Collection子类来创建集合容器:

语法: ArrayList al = new ArrayList();

###Iterator接口

Java集合框架的集合类,也可以称为容器;容器种类多样,且每种容器的内部结构不同,所以为了更简单地对容器内元素进行操作,Java引入了 Iterator接口。Iterator对象也被称为迭代器。

迭代是集合元素的通用获取方式,取出元素前先判断集合中是否有该元素。如果集合中有该元素,则取出,然后进行判断是否还有该元素,一直把集合中的该元素全部取出。

主要方法和功能概述:

1、boolean hasNext() 如果仍有该元素可以迭代,则返回true

2、E next () 返回迭代的下一个元素

3、void remove() 删除集合里上一次next()方法返回的元素

Iterator接口无法直接使用,因此需要使用Iterator接口的实现类对象,而Collection接口中的Iterator方法,返回的就是迭代器的实现类对象。

增强for循环

增强for循环也被称为 (for each 循环),是专门遍历数组和集合的。其内部原理 是通过 Iterator 实现的,在遍历的过程中不能对集合中的元素进行增删操作。

语法: for(变量类型 变量: 需迭代的数字或者集合)

泛型

泛型本质是参数化类型,也就是把所操作的数据类型指定为一个参数,这个参数可以用在类、接口、方法中分别创建,成为泛型类、泛型接口、泛型方法。

泛型可以看成是一个变量,用来接收数据类型。

语法:(E 为任意的引用数据类型,如String等,且不能为基本数据类型)

ArrayList al = new ArrayList;

JDK1.7以上可以右边的 E 可以不用写,即:

ArrayList al = new ArrayList<>;

在集合中可以存放任意对象,只要把对象存储到集合中,对象都会被替换为Object类型,当需要取出一个对象并对其进行操作时,则必须采用数据转换。

集合在不使用泛型时,默认类型是Object类型,可以存储任意类型的数据,但是会引发异常。

List接口删除重复元素

List接口常用方法和功能描述:

1、boolean add( int index , E element) 向集合的尾部添加指定的元素

2、void clear() 从集合中移除所有的元素

3、boolean contains(E e) 如果当前集合中包含指定的元素,返回true

4、E get(int index) 返回集合中指定位置的元素

5、int indexOF( Object o) 返回集合中第一次出现的指定元素的索引,如果集合中不含有该元素,则返回 -1

6、 E remove(E e) 移除列表中指定位置的元素

7、boolean isEmpty(E e) 判断当前集合是否为空

7、int size() 返回集合中的元素个数

8、E set( int index , E element) 用指定元素替换集合中指定位置的元素

ArrayList集合

ArrayList集合是List接口的子类,其储存结构是数组结构。元素增删慢,但查找快。由于开发中使用最多的就是查询数据、遍历数据,故ArrayList集合是最常用的集合。其集合中方法与List集合方法基本一致。

LinkedList集合

LinkedList集合也是List接口的子类,其储存结构是链表结构,方便添加和删除元素,但查询元素稍慢。其除了继承List接口方法,还自定义了一些特有方法,主要是对集合首尾元素的添加和删除操作。

LinkedList集合类特有方法和功能描述:

1、public void addFirst(E e) 将指定元素添加到集合的首部

2、public void add(last e) 将将指定元素添加到集合的尾部

3、public E getFirst(E e) 返回集合中的第一个元素

4、public E getLast(E e) 返回集合中的最后一个元素

5、public E removeFirst() 移除并返回集合中的第一个元素

6、public E removeLast() 移除并返回集合中的最后一个元素

set接口删除重复值

1、set接口

set接口继承自Collection接口,方法基本相同。从set接口中取出元素的方式可以是:采用迭代器和增强for循环

2、HashSet集合

是set接口的一个实现类,HashSet集合的底层数据结构是哈希表,HashSet集合是根据对象的哈希码来确定元素在集合中储存位置,因此HashSet集合具有良好的存储性能和查找性能。

保证元素唯一性的方式依赖于hashCode()方法equals()方法。如果该元素的hashCode值相同,那么才会判断equals是否为true。如果元素的hashCode值不同,则不会调用equals。

3、TreeSet集合

TreeSet集合也是Set接口的一个实现类,它的底层结构是二叉树。在TreeSet集合中不允许有重复元素,同时TreeSet集合会对集合元素按照升序的顺序进行存储。当存储了大量需要进行快速检索的排序信息时,使用TreeSet集合可以很方便地对数据进行访问和检索。

TreeSet集合排序的两种方式,其为保证元素的唯一性都依赖于Comparable接口的compareTo()方法进行判断。

第一种:自然排序,compareTo()方法返回值为: -1 、0 、1,其分别表示小于、等于大于。Java的系统类都会实现compareTo()方法,因此返回的数据会按照升序的顺序进行排列,所以不需要重写compareTo()方法。

第二种:自定义重写compareTo()方法,Java系统类都需要有意义的、直观的排序,因此都实现了Comparable接口,但如果用户自定义的类是需要排序的,则需要自定义类中重写compareTo()方法,

判断TreeSet集合中是否有重复元素时根据引用数据的地址。

posted @ 2021-04-28 22:46  飞飞吻  阅读(199)  评论(0)    收藏  举报