day1 java基础回顾-集合
1、集合
1.1 集合的类型与各自的特性
---|Collection: 单列集合
---|List: 有存储顺序, 可重复
---|ArrayList: 数组实现, 查找快, 增删慢
由于是数组实现, 在增和删的时候会牵扯到数组
增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快
---|LinkedList: 链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历, 所以效率较低
---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低
和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低
---|Set: 无存储顺序, 不可重复
---|HashSet 线程不安全,存取速度快。底层是以哈希表实现的。
---|TreeSet 红-黑树的数据结构,默认对元素进行自然排
序(String)。如果在比较的时候两个对象
返回值为0,那么元素重复。
---| Map: 键值对 键不可重复,键可以重复
---|HashMap 线程不安全,存取速度快。底层是以哈希表实现的.
---|TreeMap 红-黑树的数据结构,默认对元素进行自然排
序(String)。如果在比较的时候两个对象
返回值为0,那么元素重复
---|HashTable 底层也是使用了哈希表 维护的,存取的读取快,存储元素是
无序的。
1.2遍历集合
1.2.1遍历集合的几种方式
1,使用迭代器Iterator的方式。
2,使用增强for循环的方式。
3,如果有下标,则可以使用下标的方式。
1.2.2遍历数组
public static void main(String[] args) {
// 遍历数组:
String[] arr = new String[] { "xx", "yy", "zz" };
// 1,增强的for循环
for (String elt : arr) {
System.out.println(elt);
}
// 2,下标的方式
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
1.2.3遍历List
public static void main(String[] args) {
// 遍历List:
List<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
// 1,增强的for循环
for (String elt : list) {
System.out.println(elt);
}
// 2,下标
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// 3,迭代器
for (Iterator<String> iter = list.iterator(); iter.hasNext();) {
String elt = iter.next();
System.out.println(elt);
}
}
1.2.4遍历Set
public static void main(String[] args) {
// 遍历Set:
Set<String> set = new HashSet<String>();
set.add("dd");
set.add("ee");
set.add("ff");
// 1,增强的for循环
for (String elt : set) {
System.out.println(elt);
}
// 2,迭代器
for(Iterator<String> iter = set.iterator(); iter.hasNext() ; ){
String elt = iter.next();
System.out.println(elt);
}
}
注意:set类型是集合,是无序的,所以没有下标遍历方式
1.2.5遍历Map
public static void main(String[] args) {
// 遍历Map:
Map<String, String> map = new HashMap<String, String>();
map.put("aa", "xx");
map.put("bb", "yy");
map.put("cc", "zz");
// 1,增强的for循环(Entry集合)
for (Entry<String, String> entry : map.entrySet()) {
System.out.println(entry);
}
// 2,增强的for循环(Key集合)
for(String key : map.keySet()){
System.out.println(key + " = " + map.get(key));
}
// 3,遍历值的集合
for(String value : map.values()){
System.out.println(value);
}
}
|
---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList: 数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组 增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快 ---|LinkedList: 链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历, 所以效率较低 ---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低 和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低 ---|Set: 无存储顺序, 不可重复 ---|HashSet 线程不安全,存取速度快。底层是以哈希表实现的。 ---|TreeSet 红-黑树的数据结构,默认对元素进行自然排 序(String)。如果在比较的时候两个对象 返回值为0,那么元素重复。 ---| Map: 键值对 键不可重复,键可以重复 ---|HashMap 线程不安全,存取速度快。底层是以哈希表实现的. ---|TreeMap 红-黑树的数据结构,默认对元素进行自然排 序(String)。如果在比较的时候两个对象 返回值为0,那么元素重复 ---|HashTable 底层也是使用了哈希表维护的,存取的读取快,存储元素是 无序的。 |
day1 java基础回顾-集合的更多相关文章
- day1 java基础回顾-泛型
2.泛型(Generic) 当集合中存储的对象类型不同时,那么会导致程序在运行的时候的转型异常 1 import java.util.ArrayList; 2 import java.util.Ite ...
- day1 java基础回顾- 文件路径
绝对路径 以根目录或某盘符开头的路径(或者说完整的路径) 例如: l c:/a.txt (Windows操作系统中) l c:/xxx/a.txt (Windows操作系统中) l /var/x ...
- day1 java基础回顾-内省
为什么要学内省? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性. 内省是用于操作j ...
- day1 java基础回顾- Properties类与配置文件
Properties配置文件说明 Properties类对应.properties文件.文件内容是键值对,键值对之间使用"="或空格隔开.开头是"#"的表示注释 ...
- day1 java基础回顾-Junit单元测试
Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件 ...
- day1 java基础回顾-多线程
启动线程方式 方式一:继承Thread. 1. 自定义一个类继承Thread类. 2. 重写Thread的run方法,把自定义线程的任务代码定义在run方法上. 3. 创建Thread子类的对象,并且 ...
- day1 java基础回顾-IO流
IO流的分类 注:这几个类都是抽象类. IO解决问题: 解决设备与设备之间 的数据传输问题. 比如: 硬盘--->内存 内存----->硬盘 字节流: 输入字节流:---------| I ...
- 四、Android学习第四天——JAVA基础回顾(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...
- 【Spring学习】【Java基础回顾-数据类型】
Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...
随机推荐
- 【BZOJ4166】月宫的符卡序列 Manacher+hash
[BZOJ4166]月宫的符卡序列 题解:题倒不难,就是有点恶心. 首先学习回文串的时候一定学到了这样一个结论:一个长度为n的串的本质不同的回文子串数量不超过n个. 那么我们就可以试图将所有回文串的价 ...
- 【BZOJ4453】cys就是要拿英魂! 后缀数组+单调栈+set
[BZOJ4453]cys就是要拿英魂! Description pps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个 ...
- 【题解】P1156垃圾陷阱
[题解]P1156 垃圾陷阱 乍看此题,我们感觉状态很多,很复杂. 遇到这类型条件比较多的\(dp\),我们不要首先考虑全部设出来,而是要看到这些状态的本质.而在这道题目中,时间和高度就是关键. 考虑 ...
- VirtualBox创建VM结果ProcessorType是空的
用WMI来查询CPU的频率,一直没问题: "Select MaxClockSpeed From Win32_Processor Where ProcessorType = 3" 结 ...
- 我的Android进阶之旅------>使用ThumbnailUtils类获取视频的缩略图
今天看了一段代码,是关于获取视频的缩略图的,让我认识了一个ThumbnailUtils类,代码如下. Bitmap bitmap = ThumbnailUtils.createVideoThumbna ...
- 前后端分离 vue的nginx配置
nginx配置vue 有全静态化 与 vue自己的应用端口 两种方式 以下是nginx跳转到vue自己的端口 https://www.jianshu.com/p/b7bd0d352db7 以下是全静 ...
- <tx:advice/> 有关的设置
将描述通过 <tx:advice/> 标签来指定不同的事务性设置.默认的 <tx:advice/> 设置如下: 事务传播设置是 REQUIRED 隔离级别是 DEFAULT 事 ...
- FastJson 输出值 首字母大小写问题
解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态 ...
- Python中出现“TabError: inconsistent use of tabs and spaces in indentation”问题的解决
- 机器学习(九)—逻辑回归与SVM区别
逻辑回归详细推导:http://lib.csdn.net/article/machinelearning/35119 面试常见问题:https://www.cnblogs.com/ModifyRong ...