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基础知识回顾的作为一个系列,当前正在做的会包含: ...
随机推荐
- Win10上Python3通过pip安装时出现UnicodeDecodeError
http://blog.csdn.net/qq_33530388/article/details/68933201 解决方法: 打开 c:\program files\python36\lib\sit ...
- Vue 填坑系列(持续更新...)
1.遇到页面显示不更新,数据已更新情况 vue-cli中: this.$nextTick(function () { this.x=x; }) 以js引入vue的网页中: this.$set( ...
- 镜像回源主要用于无缝迁移数据到OSS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到OSS上,但是又不能停止服务,此时可利用镜像回写功能实现。
管理回源设置_管理文件_开发指南_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/31865.html 通过回源设置,对于获取数据的请求以多种 ...
- transition_matrix Markov chain
- 【题解】cycle
[题解]cycle 题目描述 给定一个无向图,求一个环,使得环内边权\(\div\)环内点数最大. 数据范围 \(n \le 5000\) \(m\le 10000\) \(Solution\) 考虑 ...
- [容易]合并排序数组 II
题目来源:http://www.lintcode.com/zh-cn/problem/merge-sorted-array/
- StreamWriter结合UTF-8编码使用不当,会造成BOM(Byte Order Mark )问题生成乱码(转载)
问: I was using HttpWebRequest to try a rest api in ASP.NET Core MVC.Here is my HttpWebRequest client ...
- Android 虚拟机 程序安装目录
Android应用安装涉及到如下几个目录:system/app系统自带的应用程序,无法删除.data/app用户程序安装的目录,有删除权限.安装时把apk文件复制到此目录.data/data存放应用程 ...
- Step 0: 安装及启动
一.Setting up a Single Node Cluster: http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop- ...
- ajax进度条
.graph { width: 400px; height: 25px; border: 1px solid #f8b3d0; } .bar { background-color: #ffe7f4; ...