黑马程序员-------集合框架之Collection
来源:互联网 发布:linux 流媒体服务器 编辑:程序博客网 时间:2024/06/05 03:34
------- <a href="http://www.itheima.com"target="blank">android培训</a>、<a href="http://www.itheima.com"target="blank">java培训</a>、期待与您交流! ----------
集合,是用于存储数据的容器。
(对象多了用集合存(或数组),数据多了用对象存),所以要明确一点,集合用于存储
对象。
集合与数组的区别:
1. 数组长度固定,集合长度可变。
2. 数组可以存储任何数据类型,集合只能存储引用数据类型。
3. 数组存储的元素必须是同一数据类型,集合存储的对象可以是不同数据类型。
集合体系大致分为:
Collection
|---List
|---LinkedList
|---ArrayList
|---Vector
|---Set
|---HashSet
|---TreeSet
(本篇未涉及)
Map
|---TreeMap
|---HashMap
如上,集合框架产生出这么多容器的原因是:每一个容器对数据的存储方式不同,这种存储方式就称之为数据结构。
1.Collection接口:
Collection是最基本的集合接口,Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
2.集合共性方法:
add(object):添加一个元素
addAll(Collection) :添加一个集合中的所有元素。
clear():移除此 collection 中的所有元素,清空集合
remove(obj) :删除集合中指定的对象。注意:删除成功,集合的长度会改变。 removeAll(collection) :删除部分元素。部分元素和传入Collection一致。
boolean contains(obj) :集合中是否包含指定元素 。
boolean containsAll(Collection) :集合中是否包含指定的多个元素。
boolean isEmpty():集合中是否有元素。
int size():返回此 collection 中的元素数。
toArray(); 返回包含此 collection 中所有元素的数组。
等等
3.Iterator接口:
其中,获取集合中所有元素:Iterator iterator():迭代器
每个集合都有自己的数据结构,那么取出自己内部元素的方式也不同,那么这种取出方式就被定义成了内部类,但是共性是判断,取出。所以这些在不同集合中的内部类都符合一个规则,该规则就是Iterator,获取集合的取出对象的方法就是iterator()方法。即遍历Collection中的每一个元素,不论Collection的实际类型如何,它都支持一个该iterator()方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iteratorit = collection.iterator(); //获得集合中一个迭代对象
while(it.hasNext()) {
Objectobj = it.next(); // 得到下一个元素
}
4.List接口:
List:有序(元素存入集合的顺序和取出的顺序一致),因为元素都有索引,所以可重复。
|--ArrayList:底层的数据结构是数组,特点:查询速度很快,增删慢,线程不同步,效率高。
|--LinkedList:底层的数据结构是链表,增删元素的速度很快,查询慢,线程不同步。
|--Vector:底层的数据结构就是数组,线程同步,ArrayList替代了Vector。
List接口中凡是可以操作角标的方法都是其特有方法
增
add(index,element) :在指定的索引位插入元素。
addAll(index,collection) :在指定的索引位插入一堆元素。
删
remove(index) :删除指定索引位的元素。 返回被删的元素。
改
Object set(index,element) :对指定索引位进行元素的修改。
查
Object get(index) :通过索引获取指定元素。
int indexOf(obj) :获取指定元素第一次出现的索引位,如果该元素不存在返回-1;
所以,通过-1,可以判断一个元素是否存在。
int lastIndexOf(Object o) :反向索引指定元素的位置。
List subList(start,end) :获取子列表,包含头不包含尾。
ListIterator listIterator():list集合特有的迭代器。
------------------------------------------------------------------------------------------------------------------------------------
下面关于 listIterator()的介绍
ListIterator是List集合特有的迭代器,是Iterator的子接口。Iterator接口只有三个有限的方法,只能对元素进行判断,取出,删除操作,如果想要其他操作,如添加,修改等(注意:在迭代时不可以通过集合对象的方法操作集合中的元素,否则会发生ConcurrentModificationException并发修改异常),就可以用到子接口ListIterator该列表迭代器接口也具备对元素的增、删、改、查的操作。
package com.gzj.jihe;/* *ListIterator迭代器用法 */import java.util.ArrayList;import java.util.*;public class ListDemo {public static void main(String[] args) {// TODO Auto-generated method stubList li = new ArrayList();li.add("java01");li.add("java02");li.add("java03");li.add("java03");ListIterator it =li.listIterator();while(it.hasNext()){Object obj = it.next();if(obj.equals("java01")){it.set("java04");//ListIterator迭代器的方法it.add("java05");}}System.out.println(li);}}
知识点注意:对于list集合,底层判断元素是否相同,其实用的是元素自身的equals方法完成的。所以建议元素都要复写equals方法,建立元素对象自己的比较相同的条件依据。
5.Set接口:
Set接口:元素无序(取出和存入的顺序不一定一致),元素不可重复。
|--HashSet:底层数据结构是哈希表,线程是不同步的,不安全的。
HashSet集合保证元素唯一性:通过元素的两个方法hashCode和equals方法。 当元素的hashCode值相同时,才继续判断元素的equals是否为true。 如果为true,那么视为相同元素,不存。如果为false,那么存储。 如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。 (另写日志有示例分析)
另外,对于判断元素是否存在,删除等操作,依赖的都是hashCode和equals方法。
|--LinkedHashSet:有序,hashset的子类。
|--TreeSet:对Set集合中的元素的进行指定顺序的排序。不同步。TreeSet底层的数据结构是二叉树。
TreeSet存储字符串(元素本身是具备比较性的)示例:
package com.gzj.jihe;/* * TreeSet默认按自然顺序排序*/import java.util.Iterator;import java.util.TreeSet;public class TreeDemo {public static void main(String[] args) {// TODO Auto-generated method stubTreeSet ts = new TreeSet();ts.add("abd");ts.add("abcd");ts.add("bc");Iterator it = ts.iterator();while(it.hasNext()){it.next();}System.out.println(ts);}}
- 黑马程序员-集合框架之Collection
- 黑马程序员-集合框架之Collection
- 黑马程序员-------集合框架之Collection
- 黑马程序员java之集合框架Collection
- 黑马程序员--集合框架(collection)
- 黑马程序员--集合框架、Collection集合
- 黑马程序员--集合框架(Collection集合)
- 黑马程序员--面向对象之七:Collection集合框架
- 黑马程序员——集合框架之Collection
- 黑马程序员 Java基础之 集合框架(collection)
- 黑马程序员———集合框架之Collection接口
- 黑马程序员五、集合框架Collection
- 黑马程序员_集合框架 Collection
- 黑马程序员——集合框架-Collection
- 黑马程序员_集合框架Collection
- 黑马程序员_集合框架(Collection,Iterator)
- 【黑马程序员】java中----------Collection集合框架
- 黑马程序员 Java集合框架Collection
- Tomcat全局/局部https访问配置方法【tomcat容器的配置文件web.xml中添加security-constraint】
- java--注释方法
- 《Linux多线程服务端编程》学习笔记---第一章
- UI常忘记的控件使用方法
- java--逻辑运算 位运算
- 黑马程序员-------集合框架之Collection
- iOS开发文档
- 电脑提醒没有权限在此位置保存文件怎么办?
- Date、DateTime、TimeStamp的范围
- 多平台安装boost ,mongodb c++ driver
- poj1145(二叉树
- eclipse解决乱码问题
- CS281: Advanced Machine Learning 第二节 Generative model
- rust 学习入门