java集合框架详解
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)
原理:就是定义一个类,将集合所有的方法加同一把锁,然后返回
java集合框架详解的更多相关文章
- Java集合框架详解(全)
一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...
- Java—集合框架详解
一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...
- java的集合框架详解
前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Jav ...
- Collection集合框架详解
[Java的集合框架] 接口: collection map list set 实现类: ArryList HashSet HashMap LinkList LinkHash ...
- Java集合框架全解
Collection 集合 集合接口有2个基本方法: public interface Collection<E> { //向集合中添加元素.如果添加元素确实改变了集合就返回 true, ...
- java SSH框架详解(面试和学习都是最好的收藏资料)
Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...
- JAVA集合类型详解
一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...
- Java Collection框架详解
引用自:http://blog.sina.com.cn/s/blog_6d6f5d7d0100s9nu.html 经常会看到程序中使用了记录集,常用的有Collection.HashMap.HashS ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
随机推荐
- zTree实现删除树子节点
zTree实现删除树子节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</tit ...
- freemarker写select组件(五)
freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...
- Tomcat报内存溢出
1.错误描述 严重:Exception occurred during processing request:null java.lang.reflect.InvocationTar ...
- RAID10与RAID01比较,RAID10与RAID5比较
RAID10和RAID01的比较RAID10是先做镜象,然后再做条带. RAID01则是先做条带,然后再做镜象. 比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做 ...
- 【BZOJ1499】瑰丽华尔兹(动态规划)
[BZOJ1499]瑰丽华尔兹(动态规划) 题面 BZOJ 题解 先写部分分 设\(f[t][i][j]\)表示当前在\(t\)时刻,位置在\(i,j\)时走的最多的步数 这样子每一步要么停要么走 时 ...
- mybatise插入返回主键ID
之前遇到过一次解决了,结果这次又搞了半天,在这里记录一下吧. <insert id="insertUser" useGeneratedKeys="true" ...
- c++程序运行时的内存分配《转》
C++中,内存分为5个区:堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈:是由编译器在需要时自动分配,不需要时自动清除的变量存储区.通常存放局部变量.函数参数等. 2.堆:是由new分配的 ...
- Redis之PHP操作
一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...
- AJAX跨域问题解决方法(2)——JSONP解决跨域
JSONP是什么?JSON全称为JSON with Padding,是JSON的一种补充的使用方式,不是官方协议. 使用JSONP服务器后台要改动吗?JSONP不同于一般的ajax请求返回json对象 ...
- 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】
自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信 如果你的规划需要创建多个证书,那么使用私有 ...