【当年笔记】Collection集合部分
集合继承关系图

1)Vector
特点:线程安全,消耗偏大
2)ArrayList
特点:基于数组实现,随机访问某个元素效率高。集和头尾之间包括头插入删除操作效率较低,因为插入元素后,其他元素要后移。(但实测一百万长度插入和删除操作,耗时与LinkedList接近)
3)LinkedList
特点:双向链表实现,因此增加和删除效率比较高,而随机访问效率较差。
4)HashSet
特点:无序集合、集合内不允许重复元素,基于HashMap实现;
public HashSet() {
map = new HashMap<>();
}
//添加元素时调用map的put方法其中PRESENT为hashset创建的不可变的共享值: private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
由于 HashMap 的 K 值本身就不允许重复,并且在 HashMap 中如果 K/V 相同时,会用新的 V 覆盖掉旧的 V,然后返回旧的 V.
5)TreeSet
特点:TreeSet 集合实现了自动排序
6)LinkedHashSet
特点:基于HashSet的有序集合,元素按插入顺序排列
二.集合与数组转换
集合和数组的转换可使用 toArray() 和 Arrays.asList() 来实现,参考代码:
List<String> list = new ArrayList();
list.add("cat");
list.add("dog");
// 集合转数组
String[] arr = list.toArray(new String[list.size()]);
// 数组转集合
List<String> list2 = Arrays.asList(arr);
//注意::Arrays.asList方法转换返回的ArrayList不是java.util包下的,
//而是java.util.Arrays.ArrayList,是Arrays的一个静态内部类,
//这个内部类没有实现add()、remove()方法,坑!!
三.集合排序
类可以通过实现:Comparable 和 Comparator接口的比较方法,实现排序功能。
- Comparable 位于 java.lang 包下,而 Comparator 位于 java.util 包下;
- Comparable 在排序类的内部实现,而 Comparator 在排序类的外部实现;
- Comparable 需要重写 CompareTo() 方法,而 Comparator 需要重写 Compare() 方法;
- Comparator 在类的外部实现,更加灵活和方便。
【当年笔记】Collection集合部分的更多相关文章
- java学习笔记——Collection集合接口
NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...
- JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue
前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...
- JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...
- Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历
1. Collection集合存储学生对象并遍历: 需求:存储自定义对象并遍历Student(name,age) 分析: (1)创建学生类 (2)创建集合对象 (3)创建学生对象 (4)把学生对象添加 ...
- Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历
1. Collection集合存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)把字符串对象添加到集合中 (4)遍历集合 2. 代码示例: package cn.itcast ...
- Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
1.Collection集合迭代器使用的问题探讨: (1)问题1:能用while循环写这个程序,我能不能用for循环呢? 可以使用for循环替代. (2)问题2:不要 ...
- Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
1. Collection集合自定义对象并遍历案例(使用迭代器) (1)首先定义一个Student.java,如下: package com.himi.collectionIterator; publ ...
- Java基础知识强化之集合框架笔记05:Collection集合的遍历
1.Collection集合的遍历 Collection集合直接是不能遍历的,所以我们要间接方式才能遍历,我们知道数组Array方便实现变量,我们可以这样: 使用Object[] toArray() ...
- Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试
1. Collection集合的基本功能测试: package cn.itcast_01; import java.util.ArrayList; import java.util.Collectio ...
- Collection集合 总结笔记
2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) ...
随机推荐
- RabbitMQ 延迟消息实战
RabbitMQ 延迟消息实战 现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,未支付的订单或发送短信.电子邮件和推送通知下午 2:00 开始的促销活动. Ra ...
- 线段树优化DP学习笔记 & JZOJ 孤独一生题解
在 \(DP\) 的世界里 有一种题需要单调队列优化 \(DP\) 一般在此时,\(f_i\) 和它的决策集合 \(f_j\) 在转移时 \(i\) 不和 \(j\) 粘在一起(即所有的 \(j\) ...
- obj对象数据归类整理
两个字段根据id对应整理 <!doctype html> <html lang="en"> <head> <meta charse ...
- javaSE学习二
使用Scanner实现用户交互 注意点:使用next方法时一定读取到有效字符后才能结束输入,有效字符前的空白自动去除,有效字符后的空白为结束符,next不能得到有空格的字符串. nextline方法以 ...
- 云原生数据库TDSQL-C 容灾的实践和探索
云原生数据库TDSQL-C作为腾讯云架构平台部核心数据库产品之一,致力于为云上ToB用户和公司自研业务提供集高性能.低成本.大存储.低延迟.秒级扩缩容.极速回档.Serverless化七大特性于一体的 ...
- MySQL线程池、连接池等概念
一.MySQL连接池 1 连接池通常实现在client端,是指应用(客户端)预先创建一定的连接,利用这些连接服务于客户端所有的DB请求. 2 如果某一个时刻,空闲的连接数小于DB的请求数,则需要将请求 ...
- redis运维与管理
redis内存存储,速度极快 丰富的附件功能 1.持久化功能:降存储在内存的数据保存到硬盘 2.发布与订阅:将消息同时分发给多个客户端 3.过期键功能:为键设置一个过期时间,让它在指定的时间之后自动被 ...
- R包本地安装方法
问题 需要安装一个R的测试包 但是这个包没有在cran中 也没有在biomanager中 于是决定使用devtools-github安装 遇到问题 无法下载github上的R包 策略 使用local方 ...
- go语言初记
快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙) 下面记录下了解go的过程,特别记录下与你脑子里原有"观念"不同的地方: ...
- Matplotlib 绘图线
绘图过程如果我们自定义线的样式,包括线的类型.颜色和大小等. 线的类型 线的类型可以使用 linestyle 参数来定义,简写为 ls. 类型 简写 说明 'solid' (默认) '-' 实线 'd ...