集合泛型等梳理

1、集合的概述
1.1定义:
为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java提供了集合类。集合类主要负责保存、盛装其他的数据,所有的集合类都位于java.util包下。
1.2集合与数组的区别:
数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象。
1.3集合的组成:
Java集合类主要是由两个接口派生而出的:Collection和Map,它们两是Java集合框架的跟接口,这两个接口又包含了一些子接口或实现类,其中所有的Map实现类用于保存具有映射关系的数据
数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题:
1、我们需要该容器的长度是不确定的。
2、我们需要它能自动排序。
3、我们需要存储以键值对方式存在的数据。
如果遇到上述的情况,数组是很难满足需求的,接下来本章将介绍另一种与数组类似的数据结构——集合类,集合类在Java中有很重要的意义,保存临时数据,管理对象,泛型,Web框架等,很多都大量用到了集合类。
常见的集合类有这些种:
实现Collection接口的:Set、List以及他们的实现类。
实现Map接口的:HashMap及其实现类,我们常用的有Map及其实现类HashMap,HashTable,List、Set及其实现类ArrayList、HashSet

在这里插入图片描述
二、基本方法及使用

实现Map接口的
HashMap
Set的实现类HashSet,底层还是调用Map接口来处理
Map接口中的原始方法有:
public abstract int size();
public abstract boolean isEmpty();
public abstract boolean containsKey(Object paramObject);
public abstract boolean containsValue(Object paramObject);
public abstract V get(Object paramObject);
public abstract V put(K paramK, V paramV);
public abstract V remove(Object paramObject);
public abstract void putAll(Map<? extends K, ? extends V> paramMap);
public abstract void clear();
public abstract Set keySet();
public abstract Collection values();
public abstract Set<Entry<K, V>> entrySet();
public abstract boolean equals(Object paramObject);
public abstract int hashCode();
每个方法都是由abstract修饰的,平时也可以不写,JVM中会默认编译。
现Collection接口的
ArrayList
boolean isEmpty():如果容器里面没有保存任何元素,就返回true。
boolean contains(Object):如果容器持有参数Object,就返回true。
Iterator iterator():返回一个可以在容器的各元素之间移动的Iterator。
Object[] toArray():返回一个包含容器中所有元素的数组。
Object[] toArray(Object[] a):返回一个包含容器中所有元素的数组,且这个数组不是普通的Object数组,它的类型应该同参数数组a的类型相同(要做类型转换)。
void clear():清除容器所保存的所有元素。
boolean remove(Object o);
boolean add(Object):确保容器能持有你传给它的那个参数。如果没有把它加进去,就返回false。
boolean addAll(Collection):加入参数Collection所含的所有元素。只要加了元素,就返回true。
boolean containsAll(Collection):如果容器持有参数Collection所含的全部元素,就返回true
boolean removeAll(Collection):删除容器里面所有参数Collection所包含的元素。只要删过东西,就返回true。(“可选”)
boolean retainAll(Collection):只保存参数Collection所包括的元素(集合论中“交集”的概念)。如果发生过变化,则返回true。boolean equals(Object o);
int hashCode();
int size():返回容器所含元素的数量。
这些方法也就是Set和List及它们的实现类里有的方法。
List接口在Collection接口的基础上,有添加了自己的一系列方法:
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
int indexOf(Object o);
int lastIndexOf(Object o);
ListIterator listIterator();
ListIterator listIterator(int index);
List subList(int fromIndex, int toIndex);

Iterator接口:

对 Collection 进行迭代的迭代器,即对所有的Collection容器进行元素取出的公共接口。

该迭代器对象依赖于具体容器,因为每一个容器的数据结构都不同,所以该迭代器对象是在具体容器中进行内部实现的。(内部类,可以看具体容器的源码)

对于使用容器者而言,具体的实现方法不重要,只要通过具体容器获取到该实现的迭代器的对象即可,也就是iterator()方法,而不用new。(Iterator ite=list.iterator();)

集合框架工具类Collections和Arrays

Collections是集合框架的工具类,里面的方法都是静态的。

猜你喜欢

转载自blog.csdn.net/weixin_43279596/article/details/83618819