Collection

List(存取有序,有索引,可以重复)

  1. ArrayList

    底层是数组实现的,线程不安全,查找和修改快,增和删比较慢

  2. LinkedList

    底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢

  3. Vector

    底层是数组实现的,线程安全的,无论增删改查都慢

  • 如果查找和修改多,用ArrayList
  • 如果增和删多,用LinkedList
  • 如果都多,用ArrayList

Set(存取无序,无索引,不可以重复)

  1. HashSet

    底层是哈希算法实现

  2. LinkedHashSet

    底层是链表实现,可以保证元素唯一,存取顺序一致

  3. TreeSet

    底层是二叉树算法实现,可以排序,存储自定义类型时需要注意实现Comparable接口并重写compareTo方法

一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高,TreeSet在面试的时候比较多

Map

  1. HashMap

    底层是哈希算法

  2. LinkedHashMap

    底层是链表,存取顺序一致

  3. TreeMap

    底层是二叉树算法,可以排序

    开发中用HashMap比较多

遍历

https://www.cnblogs.com/leskang/p/6031282.html

JDK9的新特性

List接口,Set接口,Map接口里增加了一个静态的方法of(),可以给集合一次性添加多个元素

static <E> List<E> of(E...elements)

使用前提:当集合中存储的元素个数已经确定了,不再改变时使用

注意:

  1. of()方法只适用于 List接口,Set接口,Map接口,不适用于接口的实现类
  2. of()方法的返回值是一个不能改变的集合,集合不能再使用add()put()方法添加元素,会抛出异常
  3. Set接口和Map 接口在调用of()方法的时候不能有重复的元素,否则抛出异常

JavaSE复习(二)集合的更多相关文章

  1. JavaSE复习_9 集合框架复习

    △列表迭代器也是不支持在迭代的时候添加元素的,只是列表迭代器自己定义了增删的方法而已.迭代器可以看成实在两个元素之间的指针,每当调用next就跳过一个元素并返回刚刚跳过的元素. △HashTable不 ...

  2. JAVA基础部分复习(二、集合类型)

    对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import ja ...

  3. javaSE复习之——线程

    线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...

  4. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  5. JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序

    前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...

  6. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  7. JavaSE中Collection集合框架学习笔记(1)——具有索引的List

    前言:因为最近要重新找工作,Collection(集合)是面试中出现频率非常高的基础考察点,所以好好恶补了一番. 复习过程中深感之前的学习不系统,而且不能再像刚毕业那样死背面试题,例如:String是 ...

  8. JavaSE复习(七)Stream流和方法引用

    Stream流 全新的Stream概念,用于解决已有集合类库既有的弊端. 传统集合的多步遍历代码 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作.而当我们 ...

  9. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...

随机推荐

  1. 菜鸟笔记 -- Chapter 6.2.3 成员变量

    6.2.3  成员变量 在Java中对象的属性也称为成员变量[也叫字段].成员变量的类型可以设置为Java中合法的数据类型,其实成员变量就是普通的变量,可以为它设置初始值,也可以不设置初始值,如果不设 ...

  2. django-模板层基础2

    1.模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头 部不需要改变),那么这样我们可以把那个头部重新写在一 ...

  3. ios微信公众号分享回调事件

    IOS手机在分享成功后,回调事件无法正常执行,在回调方法里面加入: setTimeout(function () { //todo }, ); 例如: //分享 Share({ title: &quo ...

  4. java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testSelect], {ExactMatcher:fDisplayName=testSelect(cool.zsn.Dao.UserMapperTest)], {LeadingIdentifierMatcher:fClassName=cool.zsn

    @Before:每次调用类中的方法,都会先执行@Before下的方法 @Before下的方法应该是  public : @Before public void init() { application ...

  5. MySQL备份恢复之mysqldump

      Preface       The day before yesterday,there's a motif about the lock procedure when backing up My ...

  6. mysql的密码忘记了,怎么办, 来来来.

    尤其是在学习的过程, 也是天天和数据库打交道, 难免会有脑子短路的时候, 比如root密码忘记了, 你说怎么办~~~, 没关系, 往下看 mysql提供了一种跳过用户认证的配置, 参数, 你配置上这个 ...

  7. 利用python和opencv批量去掉图片黑边

    import os import cv2 import numpy as np from scipy.stats import mode import time import concurrent.f ...

  8. 【ospf-路由过滤】

  9. Cent OS 下 VI 使用方法

    vi的基本概念  基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 1) 命 ...

  10. Could not obtain transaction-synchronized Session for current thread 错误的解决方法!

    BsTable bsTable = new BsTable(); // String time = request.getParameter("date"); String tim ...