黑马程序员——Java集合之Collection
来源:互联网 发布:excel删除重复数据 编辑:程序博客网 时间:2024/06/07 23:35
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
集合的特点
1、集合是专门存储对象的容器2、集合的长度可变
3、不可以存储基本数据类型
集合类的add方法的参数类型是Object,以便于接收任意对象
集合中存储的都是对象的引用,即对象的地址
Collection中包含两个子接口List和Set,List中元素的有序的,可以重复,因为该集合体系有索引,Set集合是无序的,元素不可重复。有序和无序说的是存入和取出的顺序是不是一致。
Collection集合中常用的方法有添加元素 add(Object obj)、删除元素remove(Object obj)、清空集合clear()、判断是否存在某个元素contains(Object obj)、判断是否为空isEmpty(),获取集合的长度size()
List l = new ArrayList();
方式一
获取其迭代器对象
Iterator it = l.iterator;
while(it.hasNext()){
System.out.println(it.next());
}
方式二
for(Iterator it = l.iterator;it.hasNext(); ){
System.out.println(it.next());
}
List集合中常用的两个集合为ArrayList和LinkedList
ArrayList的底层是数组结构,凡是可以操作角标的方法都是该体系的特有方法
在指定位置添加元素add(index,element),删除指定位置的元素remove(index),修改指定位置的元素set(index),查询get(index),subList(from,to)。
Iterator迭代器是依赖Collection而存在的,在迭代的过程中不能对集合进行操作,因为他们两个是相互依存的,若改变了集合的属性,而不告诉迭代器,就会报错。而ArrayList有一个特有的迭代器对象,即listIterator,是Iterator的子接口,它可以在迭代对集合进行操作。
LinkedList的底层数据结构是链表
addFirst()和addLast()方法分别在头和尾添加元素,getFirst()和getLast()方法分别获取头和尾的元素,removeFirst()和removeLast()分别移除头和尾的元素。JDK1.6后又出
现了peek:获取但不删除和poll:获取并移除,若空则都返回null。
下面是用LinkedList模拟了一个队列结构,先进先出
其输出结果
HashSet的底层数据结构是哈希表,线程非同步的,对于判断元素是否存在和删除等操作,通过HashCode()和equals()来保证元素的唯一性。若某对象存进HashSet后就不能修改其参与哈希值的字段了。
TreeSet的底层数据结构是二叉树结构,线程不同步的,可对Set集合中的元素进行排序,必须具备比较性才能存入,保证元素唯一性的依据是compareTo方法。
排序时,当主要条件相同时,一定要判断次要条件
TreeSet排序的第一种方法:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式也成为元素的自然顺序。
程序代码演示如下
其结果为
TreeSet排序的第二种方式,当元素自身不具备比较性,或其比较性不是所需要的,这时就让集合自身具备比较性,在集合初始化时,就有了比较方式,当两种排序都存在时,会以比较器为主。其方法为定义一个类,实现Comparator接口,覆盖compare方法,然后将该类对象作为参数传递给TreeSet集合的构造函数
程序代码仍然以上面的为主,只不过这次传入了比较器,结果就按照比较器定义的内容输出结果了其结果为
选择集合的判断方法
要唯一么?
需要:Set
要指定顺序么?
需要:TreeSet
不需要:HashSet
和存储一致的顺序LinkedHashSet
不需要:List
是否频繁增删?
是:LinkedList
否:ArrayList
- 黑马程序员——JAVA基础之简述集合collection
- 黑马程序员——Java集合类之Collection
- 黑马程序员——Java集合之Collection
- 黑马程序员——Java集合Collection
- 黑马程序员——Java Collection集合
- 黑马程序员---java基础之集合Collection
- 黑马程序员-java集合笔记之Collection
- 黑马程序员java基础知识之集合Collection
- 黑马程序员----Java之集合Collection
- 黑马程序员java之集合框架Collection
- 黑马程序员———集合框架之Collection接口
- 黑马程序员——集合框架之Collection
- 黑马程序员——java基础学习--Collection集合
- 黑马程序员——java基础---集合--Collection
- 黑马程序员—Java集合框架(Collection、ArrayList)
- 黑马程序员—java基础_集合Collection
- 黑马程序员---java Collection集合
- 黑马程序员——Java学习笔记之11——“Collection集合”总结
- iOS开发UI篇—实现UItableview控件数据刷新
- SylixOS的BSP开发实例之S3C2416 【第二篇】内存映射与初始布局
- Python抓取2015广东考生录取情况
- Android PropertyAnimation官网文档翻译
- GTK+简介
- 黑马程序员——Java集合之Collection
- ACM-ICPC Live Archive - Home 4329 - Ping pong
- 用kd树的最近邻搜索
- android 5.0 修改默认壁纸
- 【Unity】Unity中使用C#脚本调用JS脚本的使用方法
- Shell脚本
- namespace的用法
- sql查询
- 如何让android studio在运行时自带签名