java集合框架详解
2018-06-18 03:07:22来源:未知 阅读 ()
java集合框架详解
一、Collection和Collections直接的区别
Collection是在java.util包下面的接口,是集合框架层次的父接口。常用的继承该接口的有list和set。可以对集合元素进行插入、删除、判断一个元素是否其成员、遍历等操作
Collections是java.util包下面的工具类、提供了关于集合中查找、排序、替换、线程安全化等操作
二、list接口
ArrayList:底层结构是数组、查询快、插入和删除慢、非线程安全的 当数组超出初始容量就会扩容按照50%扩容
linkedList:底层结构是链表、查询慢、插入和删除快、非线程安全的
Vector:底层结构是数组、线程安全的、无论插入还是查询都特别慢 按照数组的100%延长
三、set接口
数据结构:数据的存储方式
set中的方法和Collection中的方法是一致的,set接口中取出的方式只有一种。迭代器
HashSet:底层数组结构是哈希表,线程是不同步的、无序的、高效的
HashSet保证元素的唯一性;通过元素的hashCode和equals方法完成
当元素的hashcode值相同时,才继续判断元素的equals是否为true
如何为true则视为相同元素,不存。如果为false,那么存值
如果hashcode值不同,那么不判断equals,从而提高对象的比较速度
LinkedHashSet 有序,hashset的子类
TreeSet 对set集合中的元素进行指定顺序的排序,不同步。TreeSet底层数据结构就是二叉树
对于ArrayList集合,判断元素是否存在,或者删除元素,底层的依据都是equals\
对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashcode()方法和equals()方法
三、Map接口
HashTable:底层是哈希表数据结构,是线程同步的。不可以存储null建和null值
HashMap:底层是哈希表数据结构,是线程不同步的,可以存储null建和null值,替代了hashTable
Treemap:底层是二叉树结构,可以对Map中的建进行指定顺序的排序
Map集合存储和Collection集合有很大的不同
Collection一次存一个元素,而Map一次存一对元素
Collection是单列元素,而Map是双列元素
Map中存储的一对元素:一个是键一个是值。键和值直接有对应(映射)关系
特点:要保证Map中键值的唯一性
想要取Map中所有的元素
原理:Map中没有迭代器,Collection具备迭代器,只要将Map集合转成set集合,就可以使用迭代器了。之所以转成set,是因为Map结婚具备键的唯一性。其实set集合就是来自Map,set集合底层其实用的就是Map方法
把Map转化成set的方法有两种
map.keySet()和 map.entrySet();
Entry就是Map接口中的内部接口
为什么要定义在Map的内部呢,Entry是访问键值关系的入口,是map的入口。访问的是map中的建值对。
package com.spring.test; import java.io.*; import java.util.*; /** * Created by Administrator on 2018/2/28. */ public class TestTransient { public static void main(String[] args) { HashMap<String,Integer> map = new HashMap<String, Integer>(); map.put("张三",10); map.put("李四",20); //把map转化成set集合 Set sest1 = map.keySet(); Iterator it = sest1.iterator(); while (it.hasNext()){ System.out.println("输出值"+it.next()); } Set entrySet = map.entrySet(); Iterator it2 = entrySet.iterator(); while (it2.hasNext()){ Map.Entry entry = (Map.Entry)it2.next(); System.out.println("键是="+entry.getKey()+"键对应的值是="+entry.getValue()); } } }
将非同步集合转化成同步集合的方法
List synchronizedList(List)
map synchronizedMap(Map)
原理:就是定义一个类,将集合所有的方法加同一把锁,然后返回
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java 关于接口的那点事儿
下一篇:java类中的初始化顺序
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash