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集合框架详解的更多相关文章

  1. Java集合框架详解(全)

    一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...

  2. Java—集合框架详解

    一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...

  3. java的集合框架详解

    前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Jav ...

  4. Collection集合框架详解

    [Java的集合框架] 接口: collection      map list     set 实现类: ArryList   HashSet HashMap LinkList   LinkHash ...

  5. Java集合框架全解

    Collection 集合 集合接口有2个基本方法: public interface Collection<E> { //向集合中添加元素.如果添加元素确实改变了集合就返回 true, ...

  6. java SSH框架详解(面试和学习都是最好的收藏资料)

    Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...

  7. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  8. Java Collection框架详解

    引用自:http://blog.sina.com.cn/s/blog_6d6f5d7d0100s9nu.html 经常会看到程序中使用了记录集,常用的有Collection.HashMap.HashS ...

  9. Java集合-----Set详解

    Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的       HashSet常用方法:   add(E element)  将指定的元素添加到此集合(如果尚未存 ...

随机推荐

  1. windows 下安装或者卸载memcache

    1.安装到系统服务中: 在doc中:执行此软件 memcached.exe -d install(如果提示错误,要找到cmd.exe用管理员身份打开) 2.卸载: 在doc中:执行此软件 memcac ...

  2. final、finally和finalize的区别

    final.finally和finalize的区别 这三者的区别可以从两个方面来说 1.意思解释方面 (1)final是修饰符(关键字) (2)finally是异常处理中的程序块 (3)finaliz ...

  3. 个性化WinPE封装方法----制作过程需要了解的“命令”

    1.在现有的Windows7条件下,自动在E盘建立mywinpe文件夹,设置 Windows PE 构建环境,并保存到E:\mywinpe下 copype.cmd x86 E:\mywinpe 2.将 ...

  4. 错误号码2003 Can't connect to MySQL server 'localhost' (0)

    错误描述 错误原因 最近,我一直都可以用SQLyog连接本地数据库,但是近几天却无法连接:并且一直都报上述错误,我查阅了很多资料,发现有很多中说法 总结一下 第一,MySQL中的my.ini出错: 第 ...

  5. jquery-1.11.1.js

       每次想要使用这个js时,总是要到官网上下载,太麻烦,现在把它收录了 jquery-1.11.1.js /*! * jQuery JavaScript Library v1.11.1 * http ...

  6. EJB相关的面试题

    1.EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别. (1)EJB包括Session Bean.Ent ...

  7. 【Luogu2711】小行星(网络流,最大流)

    [Luogu2711]小行星(网络流,最大流) 题面 题目描述 星云中有n颗行星,每颗行星的位置是(x,y,z).每次可以消除一个面(即x,y或z坐标相等)的行星,但是由于时间有限,求消除这些行星的最 ...

  8. c#多线程同步之EventWaitHandle的应用

    最近在研究前辈写的winform代码,其中有一个功能,前辈用了EventWaitHandle.初读代码,有点不理解,慢慢想来,还是可以理解的.这个功能,就是执行某项比较耗时的任务,需要打开旋转图标,等 ...

  9. web前端UI框架

    分类:WEB前端 时间:2016年1月13日 目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了.在移动WEB开发的过程中,使用合适的移动WE ...

  10. Win10+QT5.7.1搭建opencv开发环境

    一.准备工作: 1下载Qt5.7.1软件qt-opensource-windows-x86-mingw530-5.7.1.exe(http://download.qt.io/official_rele ...