第十一章 集合
来源:互联网 发布:天涯明月刀数据异常 编辑:程序博客网 时间:2024/06/04 18:52
集合的长度是可变的。
Collection:层次结构的集合接口,用于描述一组对象。
Map:键值结构的集合接口,可以通过键获取值。
Collection Map
| |
list set (子接口) HashMap(实现类)
| |
ArrayList HashSet (实现类)
Iterable 迭代器 ,所有的超级接口,有一个iterator()的方法
List集合的特点:
1、线性存储数据(队列结构,先进先出)
2、允许写进重复的数据
ArrayList :是一个动态数组,其底层是通过数组来实现的。
打印显示集合的所有元素(三种方法)
方法一:普通的循环遍历
ArrayList list = new ArrayList();
for(int i =0 ; i < list.size(); i++){
system.out.println(list.get(i));
}
方法二:迭代器迭代
//获取集合的迭代器
Iterator iterator = list.iterator();
//使用迭代器进行数据的迭代
while(iterator.hasNext()){
//获取当前迭代的数据
Object value = iterator.next();
system.out.println(value);
}
方法三:快速迭代的方式
结构:for(元素的类型 变量名:被遍历的集合){
//通过变量名表示遍历到的数据值
}
for(Object value:list){
system.out.println(value);
}
在快速遍历的迭代过程中,不允许对被遍历的集合进行增删改等操作。
性能方面:
ArrayList在查询的时候性能较好,但对集合的数据进行增加、删除、修改等操作时性能较差。
LinkedList采用的是链式结构,所以它对增、删、改等操作性能较好,但对查询性能就会很差。
ArrayList集合会把后面的元素(因为ArrayList在增加操作时,如果超过初始的长度,它会新建一个长度为原来1.5倍+1的数组,代替原来的数组;删除时,如果前面的元素值被删除,值往前面移动)
(LinkedList采用链式结构,所以在执行增删改操作时,只需要对元素值得指针进行改变,而指针的改变对内存的消耗是很少的,在查询上,LinkedList集合在存储元素时,是随机存储的,然后通过指针连接)
Vector 集合 和ArrayList 都属于动态数组,区别在于Vector 是线程安全集合,而ArrayList是非线程安全集合。
set集合
特点:
1、无序存储
2、不能存储重复的元素
set集合无法获取单个指定的元素,所以只能通过遍历或者迭代的方式来获取。
set集合存储的元素根据哈希值排列的额,并且不能存储重复的数据。
泛型
通过泛型来约束集合中存储的元素类型
使用泛型后不需要进行拆箱
Map
以键值对的方式存储数据。
键不能重复
值允许重复
通过键获取值
同上的Vector 和ArrayList,HashMap是非线程安全的集合,而HashTable是线程安全的集合。
Entry表示一个键值对,Map中的每个元素都是Entry类型。
//记住HashMap的三个重要方法
entrySet()//获取集合中的所有键值对
keySet()//获取集合中的所有键
values()//获取集合中的所有值
三种方式遍历HashMap集合
HashMap<Integer,String> map = new HashMap<Integer,String>();
map.put(1001,"A");
map.put(1002,"B");
map.put(1003,"C");
//方法一根据键来遍历集合
for(Integer key:map.keySet()){
system.out.println(map.get(key));
}
//方法二:根据值来遍历
for(String value:map.values()){
system.out.println(value);
}
//方法三:根据键值对Entry来遍历
for(Entry<Integer,String> entry:map.entrySet()){
system.out.println(entry.getKey()+"\t"+entry.getValue());
}
collections 类是Java集合框架的工具类,封装了集合相关的处理方法
Arrays类也是集合的工具类,仅针对 List 结合的使用
//直接获取List集合
//空集合,emptyList()方法
List list = Collections.emptyList();
//指定值的集合 ...表示参数允许出现任意多次,asList()方法
List list = Arrays.asList("a","b","c","d");
System.out.println(list.size());
0 0
- 第十一章:集合(一)
- 第十一章:集合(二)
- 第十一章 集合
- 第十一章 对象的集合
- java笔记第十一章之集合
- JavaSE学习 第十一章 集合与映射
- ThinkingInJava3(中文版)__第十一章:对像的集合
- Java学习总结之第十一章 Java集合
- Core Java第十一章知识点总结——集合
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章
- 第十一章 文件系统
- 【42.59%】【codeforces 602A】Two Bases
- 第十章 异常和断言
- 利用多线程计算元素数组的和
- 53. Maximum Subarray Add to List QuestionEditorial Solution
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- 第十一章 集合
- DSS遇到的问题
- 12.2 格栅
- 双击,弹出对话框退出App
- ngrok跑"半天" 端口失效
- 极光推送的集成步骤
- 第十二章 线程
- Java基本数据类型转换
- 第十三章 I/O流