Java从零开始学二十(集合简介)
一、为什么需要集合框架
数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象、或者需要更复杂的方式存储对象,---那么,可以使用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接口:不能存放重复的内容,所有的重复内容是靠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从零开始学二十(集合简介)的更多相关文章
- Java从零开始学二十四(集合工具类Collections)
		
一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...
 - Java从零开始学二十二(集合Set接口)
		
一.Set接口的定义 Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素 Set接口的主要方法与Collection是一致 ...
 - Java从零开始学二十三(集合Map接口)
		
一.Map接口 Collection.Set.List接口都属于单值的操作,即:每次只能操作一个对象,而Map与它们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key à v ...
 - Java从零开始学二十一(集合List接口)
		
一.List接口 List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下: public interface List<E> extends Collecti ...
 - Java从零开始学二十九(大数操作(BigIntger、BigDecimal)
		
一.BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作. 不可变的任意精度的整数.所有操作中 ...
 - Java从零开始学二十八(Math类和Random类)
		
一.Math概述 提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率) 二.常用方法 package com.pb.demo1; public class MathTest { ...
 - Java从零开始学二十六(包装类)
		
一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...
 - Java从零开始学二十五(枚举定义和简单使用)
		
一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...
 - Java从零开始学四十二(DOM解析XML)
		
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
 
随机推荐
- Null 和 Undefined
			
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
 - Java Log Viewer日志查看器
			
工欲善其事必先利其器 在投奔怒海--一个Domino老程序猿眼里的Java开发我提到眼下所做的Java开发中遇到的大量日志之问题. server控制台刷屏似地滚动,日志文件飞快地增长,debug的时候 ...
 - BTSync 2.0 Vs. 1.4 Folders
			
Sync 2.0 supports boths new 2.0 folders and classic 1.4 folders, s o when you upgrade your Sync it w ...
 - jQuery制作水平多级下拉菜单
			
本篇体验使用jQuery制作水平的.多级的.下拉菜单. 下拉菜单的html部分如下. <body> <nav class="main-nav"> <u ...
 - centos安装sqlserver
			
centos安装sqlserver 必要條件 您必须具有 RHEL 7.3 或 7.4 计算机至少 2 GB的内存. 若要在自己的计算机上安装 Red Hat Enterprise Linux,请转到 ...
 - ubuntu 常用配置
			
root 登录 sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf加:greeter-show-manual-login=true设 ...
 - IOS tableview 横向滚动
			
1. UITableView 设置 CGRect tableViewRect = CGRectMake(0.0, 0.0, 50.0, 320.0);self.tableView = [[UITabl ...
 - Mysql运行模式及1690错误处理
			
最近一段运行良好的代码突然无法运行,报错: MySQL said: Documentation 1690 - BIGINT UNSIGNED value is out of range in 经过查询 ...
 - golang包管理工具及环境管理工具;如何下载外网的依赖包
			
简介: golang的包管理工具类似于java的maven.python的pip.js的npm,可以实现依赖包的统一管理:有很多:govendor.godep.glide,挑一个自己喜欢的用吧.mac ...
 - Java:字符串类简单的正则表达式
			
class Test { public static void main(String[] args) { String str = "xia..as....yuan.com"; ...