黑马程序员——java基础--集合
来源:互联网 发布:淘宝差评师曝光网 编辑:程序博客网 时间:2024/06/08 15:36
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、集合
集合其实也是一种容器。和数组一样是用来存储多个数据的容器
对比着数组来讲:
1.集合中的大小不固定。随着向集合中存储的元素增加,集合大小也随着增加
2.集合中可以存储引用类型的任何数据,可以存储不同类型的引用数据
3.集合除了可以通过角标操作外,还具有其它操作元素的方式
二、集合框架
集合是用来存储元素的。在使用集合存储元素时,会存在不同的存储需求,
在存储时不允许存储重复元素、在存储时要求元素按照某种规则进行排序。而针
对于不同的存储需求,就需要用来解决不同需求集合类。在这些不同集合类中,
是具有共性功能:存储功能、删除功能等。对于具有的共性内容,就会向上抽取,
重新封装为类,经过不断的向上抽取封装,从而就形成集合框架体系结构,简称
为集合框架。
三、Collection接口
1、Collection集合中常用方法
添加方法:boolean add(Object obj)
把指定的obj对象,存储到Collection集合中,存储成功则返回true
删除方法:boolean remove(Object obj)
把指定的obj对象,从Collection集合中删除,删除成功则返回true
修改方法: 注意:在Collection集合中没有修改方法
获取方法: 在Collection集合中直接从集合中获取元素的方法。
想要获取Collection集合中的元素,需要对Collection集合进行
遍历,通过遍历获取集合中元素
其它方法:
void clear() 用来清空集合中所存储的全部元素
boolean contains(Object obj) 判断集合中是否包含指定的元素obj
boolean isEmpty() 判断是集合中是否有存储元素,没有任何则返回true
int size() 获取集合中所存储元素的个数
Object[] toArray() 把集合对象转为数组
2、 Collection集合中带All方法
添加方法: boolean addAll(Collection c)
把指定的集合c中所有的元素添加到集合对象中
删除方法: boolean removeAll(Collection c)
从集合对象中,删除和指定的集合c中相同的元素
判断方法: boolean containsAll(Collection c)
判断集合对象中是否包含所指定的集合对象c中的所有元素
四、集合的遍历——Iterator迭代器
Iterator接口中的方法
boolean hasNext() 判断集合中有没有元素还可以继续迭代
Object next() 获取集合中的正在迭代的元素
使用Collection接口中的方法,可以获取到迭代器对象
iterator()
例如:获取coll集合中的所有元素
Collection coll = new ArrList();
Iterator it = coll.itertor();
while(it.hasNest()){
System.out.println(it.next());
}
五、List集合
在Collection集合下,存在两个子集合对象:List、Set
1、List集合的特点:
a. List集合在存取元素上是有序的
b.List集合具有角标。可以利用角标精确访问集合中的每一个元素
c.List集合允许存储重复的元素
d.List集合允许存储多个null元素
2、List集合的方法:
List(接口)集合继承了Collection(接口)集合,所以就具备使用
Collection集合中的相关方法。而List集合本身的特有方法都是
围绕着角标来设计。
List集合的特有方法:
添加元素方法:
void add(intindex,Object obj)
向List集合中指定的index角标位置上添加obj元素
boolea addAll(int index,Collection c)
向List集合中指定的index角标位置上添加指定的集合c中所有的元素
删除元素方法:Object remove(intindex)
从List集合中删除指定角标index位置上的元素。并返回被删除的元素
修改元素方法:Object set(intindex,Object obj)
修改List集合中指定的index角标位置上元素修改为obj元素,并返回旧的元素
获取元素方法:Object get(intindex)
获取集合中指定角标位置index上的元素
其它方法:
int indexOf(Object obj)
查找集合中指定的obj元素第一次出现位置。没有找到则返回-1
int lastIndexOf(Object obj)最后一次出现位置
List subList(int start, int end)
从集合的start角标开始截取end角标结束,返回截取到的子集
合对象(包头不包尾)
3、List集合的遍历
a.List集合继承了Collection,同样也具备Iterator迭代方式
b.List集合具有角标,可以使用传统的遍历方法,来遍历List
c.List集合具有自己专属的迭代器对象:ListIterator迭代器
ListIterator迭代器对象中的方法
void add() 将制定元素插入列表中
next() 返回列表中的下一个元素
void remove() 从列表中移除元素
void set() 用指定元素替换
4、ArrayList集合
实现了List集合,具备List集合的特点,
底层使用可变数组结构来存储元素
查询遍历元素的效率比较高,增删元素的效率比较低。
5、LinkedList集合
实现了List集合,具备List集合的特点
底层使用链表结构(链表的特点:有头有尾)
查询遍历元素效率比较低,增删元素的效率比较高
LinkedList集合的特有方法:
链表结构的特点,就是有头有尾,而LinkedList集合特有的方法都
是围绕头和尾设计的。
void addFirst(Object obj)
把指定的元素添加到集合的头部位置
void addLast(Object obj)
把指定的元素obj添加到集合的尾部位置
Object removeFirst()
把集合中头部位置上的元素删除,并返回被删除的元素
Object removeLast()
把集合中尾部位置上的元素删除,并返回被删除的元素
Object getFirst()
获取集合头部位置上的元素
Object getLast()
获取集合尾部位置上的元素
六、Set集合
不允许存储重复元素、
最多只能存储一个null元素,
没有角标、只能通过迭代器方式来获取集合中的元素
Set集合下的子类:
HashSet集合
LinkedHashSet集合
TreeSet集合
6.1 HashSet
特点:
a.底层使用哈希表结构
b.存取元素无序
c.实现Set接口,具备Set集合的相关特点:不允许存储重复元素、
最多只能存储一个null
d.查询和添加不重复元素的效率比较高(比可变数组都高)
6.2 LinkedHashSet(HashSet集合类下的子类)
特点:
a.底层使用链表+哈希表结构
b.增删元素效率高、查询和添加不重复元素效率高
c.存取元素有序
6.3 TreeSet
特点:
a.不允许有重复元素、只能有一个null,没有角标
b.底层使用二叉树结构
c.存储的元素会根据指定的规则自动进行排序
排序的方式有两种:
自然排序:
所存储的元素自身必须实现Comparable接口,并重写comparaTo方法
比较器排序(Comparator)
也称为强制排序。存储的元素不需要具备任何排序功能在创建
TreeSet集合时,给予集合对象赋一个比较器
七、Map集合
7.1特点:
a.Map集合中一次可以存储两个对象:键、值对象
b.Map集合在存储键时,不允许有重复的键对象元素
c.Map集合中的键只能对应一个值(键值对应)
d.Map集合没有角标,并且Map集合不具备Iterator迭代器
7.2Map集合中的常用方法
添加方法: Value put(K key , V value)
在使用put方法存储元素时,会先拿要存储的key,去Map集合中遍历
查找,查找是否有相同的key已经存在。如果有相同的key存在:则会
把要存储的value对象覆盖到原有的value上,并返回旧的value对象
如果没有相同的key存在:则会把要存储的key-value对象一起存储
到Map集合中,并返回null
删除方法:Value remove(Object key)
根据给定的key去Map集合中删除对应的key和value两个元素。如果
有给定的key元素存在,则删除成功,并返回被删除的value对象。
如果没有给定的key元素存在,则删除失败,并返回null
修改方法:Map集合中的修改方法和添加方法都是put方法
获取方法:Value get(Objectkey)
根据key获取Map集合中对应的value对象(返回Value对象)如果Map
集合中没有指定的key元素存在,则返回null
keySet()方法 获取Map集合中的所有Key对象
entrySet() 获取集合的映射关系
Map集合中存储的key和value的对应关系(映射关系)
映射关系:Key对应着一个Value
映射关系类型:Map.Entry
values() 用来获取Map集合中所有的Value对象
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——java基础: 集合
- 黑马程序员——Java基础 ---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——java基础--集合
- 黑马程序员——Java基础---集合
- 黑马程序员——java基础-集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础--------集合
- 升级Android6.0 后app无法扫描ble设备
- Android 下拉刷新框架实现
- 好框架
- __try,__except,__finally,__leave异常模型机制
- OpenGL着色器的使用总结
- 黑马程序员——java基础--集合
- python zeros()使用(from numpy import *)
- psql: FATAL: role “postgres” does not exist 解决方案
- java中的内部类(嵌套类)
- 一天一算法之选择排序
- HDU2602—Bone Collector(背包问题)
- AssemblyInfo.cs文件的作用
- 【Android】代码规范参考指南
- MySQL存储引擎MyISAM和InnoDB的对比