一、为什么需要集合框架

数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象、或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题

二、集合框架主要接口

No
接口
描述
1
Collection
是存放一组单值的最大接口,所谓的单值是指集合中的每个元素都是一个对象。一般很少会直接使用此接口直接操作。
2
List
是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩充,里面的内容是允许重复的。
3
Set
是Collection接口的子类,没有对Collection接口进行扩充,里面不允许存放重复内容。
4
Map
Map是存放一对值的最大接口,即,接口中的每个元素都是一对,以key-value的形式保存。
5
Iterator
集合的输出接口,用于输出集合中的内容,只能进行从前到后的单向输出。
6
ListIterator
是Iterator的子接口,可以进行双向输出。
7
Enumeration
是最早的输出接口,用于输出指定集合中的内容。
8
SortedSet
单值的排序接口,实现此接口的集合类,里面的内容是可以排序的,使用比较器排序。
9
SortedMap
存放一对值的排序接口,实现此接口的集合类,里面的内容按照key排序,使用比较器排序。
10
Queue
队列接口,此接口的子类可以实现队列操作。
11
Map.Entry
Map.Entry的内部接口,每个Map.Entry对象都保存着一对key-value的内容,每个Map接口中都保存多个Map.Entry接口实例。

三、接口的继承关系

在一般的开发中,往往很少去直接使用Collection接口进行开发,而基本上都是使用其子接口。子接口主要有:List、Set、Queue、SortedSet。

四、Collection子接口的定义

Collection接口虽然是集合的最大接口,但是如果直接使用Collection接口进行操作的话,则表示的操作意义不明确,所以在JAVA开发中已经不提倡直接使用Collection接口了,主要的子接口如下:
  • List接口:可以存放重复的内容。
  • Set接口:不能存放重复的内容,所有的重复内容是靠hashCode()和equals()两个方法区分的。
  • Queue:队列接口。
  • SortedSet接口:可以对集合中的数据进行排序。

五、Collection接口的方法定义

No.
方法
类型
描述
1
public boolean add(E o)
普通
向集合中插入对象
2
public boolean addAll(Collection<? extends E> c)
普通
将一个集合的内容插入进来
3
public void clear()
普通
清除此集合中的所有元素
4
public boolean contains(Object o)
普通
判断某一个对象是否在集合中存在
5
public boolean containsAll(Collection<?> c)
普通
判断一组对象是否在集合中存在
6
public boolean equals(Object o)
普通
对象比较
7
public int hashCode()
普通
哈希码
8
public boolean isEmpty()
普通
集合是否为空
9
public Iterator<E> iterator()
普通
为Iterator接口实例化
10
public boolean remove(Object o)
普通
删除指定对象
11
public boolean removeAll(Collection<?> c)
普通
删除一组对象
12
public boolean retainAll(Collection<?> c)
普通
保存指定内容
13
public int size()
普通
求出集合的大小
14
public Object[] toArray()
普通
将一个集合变为对象数组
15
public <T> T[] toArray(T[] a)
普通
指定好返回的对象数组类型

六、区别

  • Connection:接口存储值不唯一,无序的对象
  • List:接口存储值不唯一,有序(插入顺序)的对象
  • Set:接口存储值唯一,无序的对象
  • Map:接口存储值一组键值对象,提供键(Key)到值(Value)的映射

Java从零开始学二十(集合简介)的更多相关文章

  1. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  2. Java从零开始学二十二(集合Set接口)

    一.Set接口的定义 Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素 Set接口的主要方法与Collection是一致 ...

  3. Java从零开始学二十三(集合Map接口)

    一.Map接口 Collection.Set.List接口都属于单值的操作,即:每次只能操作一个对象,而Map与它们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key à v ...

  4. Java从零开始学二十一(集合List接口)

    一.List接口 List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下: public interface List<E> extends Collecti ...

  5. Java从零开始学二十九(大数操作(BigIntger、BigDecimal)

    一.BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作. 不可变的任意精度的整数.所有操作中 ...

  6. Java从零开始学二十八(Math类和Random类)

    一.Math概述 提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率) 二.常用方法 package com.pb.demo1; public class MathTest { ...

  7. Java从零开始学二十六(包装类)

    一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...

  8. Java从零开始学二十五(枚举定义和简单使用)

    一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...

  9. Java从零开始学四十二(DOM解析XML)

    一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...

随机推荐

  1. poj 1062 昂贵的聘礼 最短路 dijkstra

    #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #incl ...

  2. Mina 断线重连

    Mina 断线重连 定义:这里讨论的Mina 断线重连是指使用mina作为客户端软件,连接其他提供Socket通讯服务的服务器端.Socket服务器可以是Mina提供的服务器,也可以是C++提供的服务 ...

  3. poj 1028 Web Navigation(模拟)

    题目链接:http://poj.org/problem? id=1028 Description Standard web browsers contain features to move back ...

  4. C#把文字转换成声音

    在System.Speech命名空间下,SpeechSynthesizer类可以把文字读出来,一起来玩下~~ 首先在Windows窗体项目中引入System.Speech.界面部分: 后台代码也很简单 ...

  5. MySql_34道经典Sql试题

    MySql_34道经典Sql试题   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiaouncle/article/details/799390 ...

  6. Flask 学习(四)静态文件

    Flask 学习(四)静态文件 动态 web 应用也需要静态文件,一般是 CSS 和 JavaScript 文件.理想情况下你的服务器已经配置好提供静态文件的服务. 在开发过程中, Flask 也能做 ...

  7. 【BZOJ】【1251】序列终结者

    Splay 还是splay序列维护,这题我WA了的原因是:在Push_up的时候,当前子树的max我是直接取的L.R和v[x]的最大值,但是如果没有左/右儿子,默认是会访问0号结点的mx值,而这个值没 ...

  8. Spark GraphX图处理编程实例

    所构建的图如下: Scala程序代码如下: import org.apache.spark._ import org.apache.spark.graphx._ // To make some of ...

  9. Linux获取当前时间

    代码(可以把clock_gettime换成time(NULL)) void getNowTime() { timespec time; clock_gettime(CLOCK_REALTIME, &a ...

  10. Java 连接MS Access数据库

    java连接MS Access的两种方式: 1.JDBC-ODBC Java连接Access可以使用MS自带的管理工具-->数据源(ODBC)设置建立连接,这样就不需要导入jar.但是,如此一来 ...