首先我们要了解什么是集合?

  正所谓容器,比如说杯子是装水的容器,衣柜是装衣服的容器,那么集合就是装数据的容器。

集合有什么特点呢?

  1.集合长度是可变的

   2.集合用来存储对象

集合和数组有什么区别呢?

  1.数组用可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型。

   2.数组长度一旦定义就不可变了,集合长度是可变的。

   3.数组只能存储同一种类型的数据,集合可以存储多种类型的对象。

常用的集合有哪些呢?

  集合分为两种Collection和Map

  Collection下面的接口有List和Set,Map的实现类有HashMap,Hashtable,TreeMap,LinkedHashMap,ConcurrentMap

  List接口的实现类有ArrayList和LinkedList和Vector

  Set接口的实现类有HashSet,LinkedHashSet,TreeSet

那么List,Set,Map之间有什么区别呢?

  List是有序的,可重复的

  Set是无序的,不可重复的

  Map存储的是键值对(key-value),key是无序的,不可重复的,value是无序的,可重复的

集合框架的底层数据结构分别是什么呢?

  ArrayList:Object类型的数组

  vector:Object类型的数组

  LinkedList:双向循环链表

  TreeSet:红黑树

  HashSet:基于HashMap实现的

  LinkedHashSet:基于LinkedHashMap实现的

  TreeMap:红黑树

  HashMap:在jdk8以前用数组+链表,jdk8以后也是数组+链表但是当链表长度大于8时,链表会转化成红黑树(这样的话查找效率会增加)

  LinkedHashMap:和HashMap相同,唯一添加的就是双向链表,这样使得它可以顺序存储,也可以进行顺序操作

  Hashtable:数组+链表

那些集合是线程安全的?

  1.vector

  2.堆栈类

  3.Hashtable(底层方法都加了synchronize)

如何确保集合不被修改?

  建立一个只读集合使用Collections.unmodifiableCollection(list)

什么是迭代器,如何使用

  Iterator:可以遍历任何Collection接口

   使用:

    List<String> list = new ArrayList<String>;

    Iterator<String> it = list.iterator(); 

    while(it.hasNext){

      String its = it.Next();

      System.out.println(its)

    }

如何边遍历边移出

    List<String> list = new ArrayList<String>;

    Iterator<String> it = list.iterator(); 

    while(it.hasNext){

     it.remove();

    }

Iterator和ListIterator有什么区别

  1.前者可以遍历List和Set,后者只能遍历List

  2.前者只能单向遍历,后者可以双向遍历

随后分别介绍各种集合

Collection接口

  1.List接口

    ArrayList的优缺点

        优点:底层数组实现,查找快

           顺序添加元素方便

        缺点:插入和删除元素时候,需要做一次复制操作,耗费性能

     如何实现数组和List之间的转换

        数组->List:  Arrays.asList(array)

        List->数组:  list.toArray()

java之集合容器(Collection,Map)的更多相关文章

  1. Java中集合List,Map和Set的区别

    Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Ke ...

  2. Java中集合List,Map和Set的差别

    Java中集合List,Map和Set的差别 1.List和Set的父接口是Collection.而Map不是 2.List中的元素是有序的,能够反复的 3.Map是Key-Value映射关系,且Ke ...

  3. 【Java】集合概述Collection、Map

    Java集合分为Collection和Map,Collection又分为List.Set. List中有ArrayList.LinkedList和Vector:Set中又分为HashSet和TreeS ...

  4. 十七、Java基础---------集合框架之Map

    前两篇文章中介绍了Collection框架,今天来介绍一下Map集合,并用综合事例来演示. Map<K,V> Map<K,V>:Map存储的是键值对形式的元素,它的每一个元素, ...

  5. Java各种集合容器的总结

    Java容器指的是List,Set,Map这些类.由于翻译的问题,问到集合,Collection这些指的都是它们几个. List ArrayList 随机访问快 LinkedList 插入删除快 这个 ...

  6. java学习——集合框架(Collection,List,Set)

    集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...

  7. Java:集合,Collection接口框架图

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  8. Java自学-集合框架 Collection

    Java集合框架 Collection Collection是一个接口 步骤 1 : Collection Collection是 Set List Queue和 Deque的接口 Queue: 先进 ...

  9. [Java复习] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

随机推荐

  1. (专题四)05 matlab视角处理

    方位角 视角 子图一 子图二,视点设置在图形的正上方 子图三,视点设置在图形侧面时的效果 子图四,十点设置在图形斜下方的效果 \circ用于输出符号° view函数的其他用法 视点在笛卡尔坐标中的位置 ...

  2. Java 基础知识面试题(2020 最新版)

    Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大 ...

  3. netty全局分析1

    这个系列都是别人的分析文 https://www.jianshu.com/p/ac7fb5c2640f 一丶 Netty基础入门 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.U ...

  4. Android控件Gridivew列数行间距设定

    常用属性 列数 android:numColumns="3" 行间距 android:verticalSpacing="8dp"

  5. 摊牌了!我要手写一个“Spring Boot”

    目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping .@PostMapping .@PathVariable 写完了.我也已经将项目开源出来了,地址:https://gi ...

  6. Spring循环依赖的问题

      什么是循环依赖?就是两个Bean相互引用,比如用@Autowire 相互注入.   那么Spring是如何解决这个问题的呢?在Bean还未完全实例化前(类只实例化了一部分),将bean提前暴露出来 ...

  7. VUE第一个项目怎么读懂

    VUE介绍 VUE是前端开发框架. 原始的前端开发需要工程师写html.写css.写javascript(js).js是脚本语言,浏览器可以运行js来执行一些js支持的动作,例如点击反馈,下拉菜单.操 ...

  8. C/C++常用头文件

    原文来源:https://blog.csdn.net/thisispan/article/details/7470335 无聊的时候可以多看看: C/C++头文件一览C#include <ass ...

  9. 南方IT比赛项目

    注意: 出现以下提示点击否就可以了 导入工作台: 导入模型 安装 安装到工作台上 修改模型位置 更新工具位置 点击是 改角度 九十度 添加组件 改一下名字,方便记忆 把工具移到组件 拆除后将工具移到S ...

  10. Android设备上的逐像素碰撞检测

    介绍 我正在我的Android设备上开发一款游戏,不用说,因为我想要接触到尽可能多的用户,我做到了 省略了硬件加速.因此,我需要编写能够在大多数设备上运行的最快的代码.我从一个简单的表面视图开始 并使 ...