概述
------- android培训、java培训、期待与您交流! ----------
一、集合类
l 为什么出现集合类?
面向对象语言对事物的提现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式
l 数组和集合类同时容器,有何不同
数组虽然也可以存储对象但是长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象
l 集合类的特点
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象
二、集合框架的构成及分类
Java中集合类的关系图
为什么会出现这么多容器呢?因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构
三、针对集合框架的分类进行一一介绍:
l Collection
1. List:元素时有序的,元素时可以重复的,因为该集合体系中有索引
List:特有方法,凡是可以操作交表的方法都是该体系特有的方法
增
Add(index,element);
addAll(index,Collection)
删
remove(index)
改
Set(index,elementt);
查
Get(index);
subList(from,to);
ListIterator();
Int indexOf(obj);获取指定元素的位置
迭代器就是集合的取出元素的方式
对于迭代器Iterator需要注意的是:在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常,所以在迭代器时只能用呆呆器的方法操作元素,可是Iterator方法使有限的,只能对元素进行判断,取出删除的操作,如果想要其他操作如天剑,修改等,就需要使用其子接口ListIterator
该接口只能通过List集合的ListIterator方法获取
(1)ArrayList底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢
ArraList中比较重要的方法
Boolean add(E e);
Boolean contain(Objec o)
int indexOf(Object o) 返回此列表中首次出现指定元素的索引 如果不存在则返回-1
Object[] toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有
元素的数组
<T> T[] toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所
有元素的数组;返回数组的运行时类型是指定数组的运行时类、
型。
(2)LinkedList :特有方法
addFirst();
addLast();
getFirst();
getLast();
获取元素,但不删除元素,如果集合中没有元素会出异常
removeFist();
removeLast();
获取元素,但是元素被删除,如果集合中没有元素会出现异常
在JDK1.6中出现了替代方法
offerFirst();
offerLast();
peekFirst();
peekLast();
与上面对应
pollFirst();
pollLast();
获取元素,但是元素被删除,如果集合中没有元素会返回null
2,set:无序不可以重复元素
(1)HashSet:数据结构是哈希表,线程非同步,保证元素唯一性的原理判断元素hashCode
值是否相同,如果相同还会继续判断元素equals方法,是否为true
如图:HashSet中的元素无序
如图:如果用户想将自己的类加入HashSet集合 可以在自己的类中重写HashCode()与equals()函数
(2)TreeSet可以对Set集合中的元素进行排序,底层数据结构是二叉树,
保证元素唯一性的依据compareTo方法return0
TreeSet的第一种方式:让元素自身具备比较性元素需要实现Comparable接口,覆盖Compareto方法 ,这种方式也成为元素的自然顺序,或者叫做默认顺序
如图TreeSet存储数据结构 而且数据怎么存就怎么取 默认顺序是从小到大依次取出来
TreeSet的第二种排序方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,在集合初始化是,就有了比较方式。
集合TreeSet的一种构造方法如下:
TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序
例如 让整型Integer具有比较性 传一个Mycompare比较器
l Map public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每
个键最多只能映射到一个值。
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。其实Set集合底层使用了Map集合
1.HashTalbe:底层是哈希表数据结构 ,不可以存入null键null值 同步 jdk1.0效率低
2.HashMap:底层是哈希表数据结构,允许使用null键和null值,不同步,将Hashtalbe
替代 jdk1.2效率高
遍历HashMap的两种方法
(1)Map中的方法 Set<K> keySet() 返回此映射中包含的键的 Set 视图。
(2) Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。
3.TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序
最后
以上就是清爽老鼠为你收集整理的黑马程序员-java集合 学习笔记的全部内容,希望文章能够帮你解决黑马程序员-java集合 学习笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复