黑马程序员------第10天笔记(集合框架)
2014-04-21 19:06
260 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
集合类
1,为什么出现集合类
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
2,数组和集合类同时容器有什么不同
数组虽然也可以存储对象,但长度一定,集合长度是可变的
数组可以存储基本数据类型,而集合只能存储对象。
3,集合类的特点
集合只用于存储对象,且长度可变
4,集合的分类
为什么出现这么多的容器呢?
因为每一个容器对数据的存储方式都有不同。
这个存储方式我们称之为:数据结构
5,Collection
|--List(有序)
|-- ArrayList
|--LinkedList
① 增
boolean add(E e)
参数类型是:Object,以便于接受任意类型的对象
boolean addAll(Collection)
集合中存储的都是对象的引用(地址)
② 删
void clear()//清空
boolean remove(Object o)
boolean removeAll(Collection o)移除指定集合中的元素
③ 改
booleanretainAll(Collection c) 保留交集
booleanremoveAll(Collection c) 去掉交集
④ 查
int size( )
boolean isEmpty()
⑤ 转换
toArray()
⑥ 遍历
iterator()à取出并打印元素。sop(al)//仅仅打印数组
例:
Iterator it=al.iterator();
while(it.hasNext())
{
sop(it.next());
}
什么是迭代器?
其实就是集合的取出元素的方式。
如何最方便à在集合内部访问最方便à就把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素
那么取出方式就被定义成了内部类
而每一个容器的数据结构不同,
所以取出动作细节也不一样。但是都有共性内容判断和去除那么加些共性抽取,所以就有了
通过一个对外提供的方法iterator()
比喻取出布娃娃的夹子就是迭代器
集合中存放的都是地址
6,List和Set
Collection
|--List:元素是有序的,同时元素可以重复,因为该集合体系有索引?
|--ArrayList
|--LinkedList
|--Vector
|--Set:元素是无序的,元素不可以重复
1,List
List家的三个小弟
|--List:元素是有序的,同时元素可以重复,因为该集合体系有索引
|--ArrayList :底层数据结构使用的是数组数据结构
特点:查询速度很快(一片连续的存储空间),但是增删稍慢,非同步的
|--LinkedList:底层数据结构使用的是链表数据结构
特点:查询速度很快(不连续的存储空间),查询慢,增删快。
|--Vector:底层是数组数据结构和ArrayList有相同的结构。(元老级干部)是同步的-à过时了,以后不用了
枚举就是Vector特有的取出方式。
发现枚举和迭代器很像。其实枚举和迭代是一样的,因为枚举的名称以及方法的名称都很长所以枚举就抑郁而终。
1,ArrayList
① 凡是带角标的方法都是特有的方法
增:add(int index,E element)
addAll(index,Collection)
删:remove(index)
改:set(int index,E element)
查:get(index)
subList(int start,int end)
listIterator( )à列表迭代器
Iterator it=al.iterator();
while(it.hasNext())
{
if(it.next().equals("java02"))
{
it.remove();
al.add("java08");//并发访问出错,集合,迭代器的方法不可兼得
}
}
ListIteratorit=al.listIterator();
while(it.hasNext())
{
if(it.next().equals("java02"))
{
it.remove();
it.add("java08");//并发访问出错
}
}
可以看出ListIterator比Iterator有更加强大的功能。
2,LinkedList
特有方法:
增: addFirst()àofferFirst()
addLast()àofferLast()
删: removeFirst()àpollFirst()
removeLast()àpollLast()
改:
查: getFirst()àpeekFirst()
getLast()àpeekLast()
List集合判断元素是否相同,依据元素的equals方法
2,Set
1,概论
set家有两个小弟
Set (是无序的,元素不可以重复à1,无序性,2,唯一性)
|--HashSet:底层数据结构是哈希表,线程是非同步的。
|--TreeSet:底层数据结构是二叉树,线程是非同步的。
set功能和Collection是一致的。
2,HashSetà底层数据结构是哈希表
① 怎么区分有序和无序:存入和取出的顺序不一定一致
② HashSet如何保证唯一性的:
是通过元素的两个方法:hashCode() equals()
如果元素的hashCode值相同,才会去判断equals是否为true
如果元素的hashCode值不同,才会调用equals方法。
③ 意对于判断元素是否存在以及删除等操作都是依赖的方法是一样的。
3,TreeSetà底层数据结构是二叉树(B+树)à存入元素要具备比较性。
可以对Set集合中的元素进行排序
① 默认按字母排序à具备比较性à实现Comparable接口
② String 类中有compareTo()
③ Comparable接口à该接口强制让Student类显现比较性
public intcompareTo()
{
….
}
④ 综上所述TreeSet方法保证元素唯一性等的方法时compareTo方法(记得要实现Comparable接口)
⑤ TreeSet排序的第一种方式:元素实现Comparable接口覆盖compareTo()方法这种方式也称为元素排序的默认顺序
⑥ TreeSet集合的第二种排序方式,当元素本省不具备比较性,或者具备的比较性不是所需要的,集合自身具备比较性
在集合初始化时就有了比较方式à参照集合的构造方式
TreeSet(Comparator c)
⑦ 如果元素和容器同时具备比较性,那么容器比较性优先(比较器优先)
⑧ 以上可以推出什么à接口很重要啊,程序的扩展性
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
集合类
1,为什么出现集合类
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
2,数组和集合类同时容器有什么不同
数组虽然也可以存储对象,但长度一定,集合长度是可变的
数组可以存储基本数据类型,而集合只能存储对象。
3,集合类的特点
集合只用于存储对象,且长度可变
4,集合的分类
为什么出现这么多的容器呢?
因为每一个容器对数据的存储方式都有不同。
这个存储方式我们称之为:数据结构
5,Collection
|--List(有序)
|-- ArrayList
|--LinkedList
① 增
boolean add(E e)
参数类型是:Object,以便于接受任意类型的对象
boolean addAll(Collection)
集合中存储的都是对象的引用(地址)
② 删
void clear()//清空
boolean remove(Object o)
boolean removeAll(Collection o)移除指定集合中的元素
③ 改
booleanretainAll(Collection c) 保留交集
booleanremoveAll(Collection c) 去掉交集
④ 查
int size( )
boolean isEmpty()
⑤ 转换
toArray()
⑥ 遍历
iterator()à取出并打印元素。sop(al)//仅仅打印数组
例:
Iterator it=al.iterator();
while(it.hasNext())
{
sop(it.next());
}
什么是迭代器?
其实就是集合的取出元素的方式。
如何最方便à在集合内部访问最方便à就把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素
那么取出方式就被定义成了内部类
而每一个容器的数据结构不同,
所以取出动作细节也不一样。但是都有共性内容判断和去除那么加些共性抽取,所以就有了
通过一个对外提供的方法iterator()
比喻取出布娃娃的夹子就是迭代器
集合中存放的都是地址
6,List和Set
Collection
|--List:元素是有序的,同时元素可以重复,因为该集合体系有索引?
|--ArrayList
|--LinkedList
|--Vector
|--Set:元素是无序的,元素不可以重复
1,List
List家的三个小弟
|--List:元素是有序的,同时元素可以重复,因为该集合体系有索引
|--ArrayList :底层数据结构使用的是数组数据结构
特点:查询速度很快(一片连续的存储空间),但是增删稍慢,非同步的
|--LinkedList:底层数据结构使用的是链表数据结构
特点:查询速度很快(不连续的存储空间),查询慢,增删快。
|--Vector:底层是数组数据结构和ArrayList有相同的结构。(元老级干部)是同步的-à过时了,以后不用了
枚举就是Vector特有的取出方式。
发现枚举和迭代器很像。其实枚举和迭代是一样的,因为枚举的名称以及方法的名称都很长所以枚举就抑郁而终。
1,ArrayList
① 凡是带角标的方法都是特有的方法
增:add(int index,E element)
addAll(index,Collection)
删:remove(index)
改:set(int index,E element)
查:get(index)
subList(int start,int end)
listIterator( )à列表迭代器
Iterator it=al.iterator();
while(it.hasNext())
{
if(it.next().equals("java02"))
{
it.remove();
al.add("java08");//并发访问出错,集合,迭代器的方法不可兼得
}
}
ListIteratorit=al.listIterator();
while(it.hasNext())
{
if(it.next().equals("java02"))
{
it.remove();
it.add("java08");//并发访问出错
}
}
可以看出ListIterator比Iterator有更加强大的功能。
2,LinkedList
特有方法:
增: addFirst()àofferFirst()
addLast()àofferLast()
删: removeFirst()àpollFirst()
removeLast()àpollLast()
改:
查: getFirst()àpeekFirst()
getLast()àpeekLast()
List集合判断元素是否相同,依据元素的equals方法
2,Set
1,概论
set家有两个小弟
Set (是无序的,元素不可以重复à1,无序性,2,唯一性)
|--HashSet:底层数据结构是哈希表,线程是非同步的。
|--TreeSet:底层数据结构是二叉树,线程是非同步的。
set功能和Collection是一致的。
2,HashSetà底层数据结构是哈希表
① 怎么区分有序和无序:存入和取出的顺序不一定一致
② HashSet如何保证唯一性的:
是通过元素的两个方法:hashCode() equals()
如果元素的hashCode值相同,才会去判断equals是否为true
如果元素的hashCode值不同,才会调用equals方法。
③ 意对于判断元素是否存在以及删除等操作都是依赖的方法是一样的。
3,TreeSetà底层数据结构是二叉树(B+树)à存入元素要具备比较性。
可以对Set集合中的元素进行排序
① 默认按字母排序à具备比较性à实现Comparable接口
② String 类中有compareTo()
③ Comparable接口à该接口强制让Student类显现比较性
public intcompareTo()
{
….
}
④ 综上所述TreeSet方法保证元素唯一性等的方法时compareTo方法(记得要实现Comparable接口)
⑤ TreeSet排序的第一种方式:元素实现Comparable接口覆盖compareTo()方法这种方式也称为元素排序的默认顺序
⑥ TreeSet集合的第二种排序方式,当元素本省不具备比较性,或者具备的比较性不是所需要的,集合自身具备比较性
在集合初始化时就有了比较方式à参照集合的构造方式
TreeSet(Comparator c)
⑦ 如果元素和容器同时具备比较性,那么容器比较性优先(比较器优先)
⑧ 以上可以推出什么à接口很重要啊,程序的扩展性
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员——Java要点笔记——集合框架(Set)
- 黑马程序员 笔记(十三)——集合框架
- 黑马程序员----Java集合框架学习笔记2 Map-工具类-泛型
- 黑马程序员-------集合框架总结笔记三
- 黑马程序员_学习笔记:9) 集合框架1:Collection(List、Set)、Iterator、List(ArrayList、LinkedList、Vector)
- 黑马程序员——JAVA笔记——集合框架3——map
- 黑马程序员_温习 集合一 (个人笔记)摘要:Collection集合框架----Iterator迭代器
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- 黑马程序员_java基础学习笔记06_集合框架
- 黑马程序员——java学习笔记--集合框架
- 黑马程序员_JavaAPI——集合框架笔记总结
- 黑马程序员-java学习笔记-集合框架
- 黑马程序员 java学习笔记——集合框架2
- 黑马程序员-OC学习笔记-----Foundation框架(集合、NSNumber、NSDate)
- 黑马程序员————集合框架中Map集合复习笔记
- 【黑马程序员】Java笔记--集合框架
- 【黑马程序员】集合框架(上)——Java复习笔记
- 黑马程序员_学习笔记集合框架(I)
- 黑马程序员—Java学习笔记之集合框架(三)以及1.5新特性
- 黑马程序员----Java集合框架学习笔记1-List 与Set