java基础(8) -集合类-Collecion
集合类-Collecion
Collection接口
常用方法
//添加新元素
boolean add (E element);
//返回迭代器
Iterator<E> iterator();
Iterator接口
public interface Iterator<E>{
E next();
boolean hasNext();
//移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
void remove();
}
集合的添加迭代
Collection c = ......;//随便一种Collection实现
Iterator it = c.iterator();
while(it.hasNext()){
//do something with it.next();
}
//java 5.0+ 可以使用for each
for(Element e: c){
//do something with e;
}
AbstractCollecion-实现了iterator,size等方法
Collection实现集合
| 实现类 | 解析 |
|---|---|
| ArrayList | 可以动态增长和缩减的索引序列 |
| LinkedList | 可以在任何位置进行高效插入删除操作的序列 |
| ArrayDeque | 循环数组实现的双端队列 |
| HashSet | 没有重复元素的无序集合 |
| TreeSet | 有序集合 |
| EnumSet | 包含枚举类型的集合 |
| LinkedHashSet | 可以记住元素插入次序的集合 |
| PriorityQueue | 允许高效删除最小元素的集合 |
| HashMap | 存储键值关联的数据结构 |
| TreeMap | 键值有序排列的映射表 |
| EnumMap | 键值属于枚举类型的映射表 |
| LinkedHashMap | 可以记住键值添加次序的映射表 |
| WeakHashMap | 其值没用的之后,可以自动被垃圾回收期回收的映射表 |
| IdentityHashMap | 一种使用==(不使用equals)来比较键值的映射表 |
队列-queue
先进先出
队列尾添加元素,队列头删除元素,队列个数查询
实现方式
- 循环数组实现(容量有限)
- 链表实现
链表
链表是一个有序集合
实现ListIterator接口
public interface ListIterator<E> extends Iterator<E>{
E next();
boolean hasNext();
//移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
void remove();
//新添加的接口
//插入到下一个元素之前
void add();
//移到上一个元素
E previous();
boolean hasPrevious();
E getFirst();
E getLast();
E removeFirst();
E removeLast();
}
demo
/**
* 链表是一个有序集合
*/
LinkedList<String> llist = new LinkedList<String>();
llist.add("s1");
llist.add("s2");
llist.add("s3");
System.out.println(llist);//=>[s1, s2, s3]
/**
* Iterator的使用
*/
Iterator<String> it = llist.iterator();
System.out.println(it.next());//=>s1
it.remove();//=>移除s1
System.out.println(llist);//=>[s2, s3]
/**
* ListIterator的使用
*/
ListIterator<String> lit =llist.listIterator();
System.out.println(lit.next());//=>返回了Ss2
lit.add("1");//插入到下一个元素(s3)之前
System.out.println(llist);//=>[s2, 1, s3]
数组列表-ArrayList
有序集合,可以使用get,set方法设定指定位置元素
散列集-HashSet
为每个对象计算一个散列码(整数)
树集-TreeSet
有序的散列集
要实现Comparable接口来实现排序
双端队列-ArrayDeque,LinkedList
可以同时操作头尾的元素
优先级队列-PriorityQueue
元素任意顺序插入,都会按照排序顺序排列,remove方法总会获得优先级最低的元素
映射表-HashMap,TreeMap
若散列映射表-WeakHashMap
自动回收没用的key值
链接散列集和链接映射表-LinkedHashList LinkedHashMap
可以记住插入的顺序
枚举集和映射集-EnumSet
标识散列映射表-IdentityHashMap
java基础(8) -集合类-Collecion的更多相关文章
- 面试【JAVA基础】集合类
1.ArrayList的扩容机制 每次扩容是原来容量的1.5倍,通过移位的方法实现. 使用copyOf的方式进行扩容. 扩容算法是首先获取到扩容前容器的大小.然后通过oldCapacity (oldC ...
- 【java基础之jdk源码】集合类
最近在整理JAVA 基础知识,从jdk源码入手,今天就jdk中 java.util包下集合类进行理解 先看图 从类图结构可以了解 java.util包下的2个大类: 1.Collecton:可以理解为 ...
- Java基础__Java中自定义集合类
Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础应用
Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...
- Java基础知识学习(一)
部门接了新项目,后台使用Java框架play framework,前端是html,前后台通过rest交互,能够支持多端的互联网架构. 因为之前没有Java基础,前端使用的也很少,决定深入学习一下Jav ...
- java基础要点
Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...
随机推荐
- DDD理论学习系列(2)-- 领域
DDD理论学习系列目录 1. 引言 领域一词,主要有以下两个意思: 一国主权所达之地. 学术思想或社会活动的范围. 不管是指国家的主权范围也好还是学术活动范围,都是在讲一个范围,一个界限. 比如我们常 ...
- 在centos7下安装python3
环境搭建 准备工具: centos7:http://mirror.bit.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso virtus ...
- JSP servlet的配置与使用
1. servlet 的配置文件内容如下所示 <servlet> <description>This is the description of my J2EE com ...
- Java基础知识二次学习--第七章 容器
第七章 容器 时间:2017年4月27日15:08:30 章节:07章01节~07章04节 视频长度:20:21 +12:38 +3:55 +2:57 内容:容器API 心得: Java API ...
- python 发包爬取中国移动充值页面---可判断手机号是否异常
1.用requests.Session()的方式,可以实现自动化管理cookie.session等. 2.具体流程可以抓包分析. 所有请求的参数如要搞清楚需要分析js源码.只能提示一下,一共分为三步: ...
- 12款Linux系统恢复工具
电脑死机,硬盘崩溃,花巨大的money搞个急救保护器……这都是计算机的阴暗面.时间一直这样走着,走着,不定哪天背点儿.对于电脑损坏造成的损失,着急抓狂毫无意义.相反,使用恰当的工具反而会最小化损失.你 ...
- PHP接口学习
接口:不同类的共同行为进行定义,然后在不同类中实现不同的功能. 接口的具体语法: 接口是零件可以用多个零件组成一个新东西: 接口本身是抽象的,内部申明的方法也是抽象的: 不用加abstract 一个类 ...
- ECS_8080端口连接拒绝问题排查
原文链接 用户ECS网络设置 上图是用户ECS的网络示意图: ecs处于vpc网络下 ecs加入了一个安全组,该安全组出入方向均开放8080端口 ecs有两个网卡,一个私网主网卡(有虚线的网卡),一个 ...
- DRBD+Heartbeat+Mysql高可用读写分离架构
声明:本案例仅为评估测试版本 注意:所有服务器之间必须做好时间同步 架构拓扑 IP信息: Heartbeat安装部署 1.安装heartbeat(主备节点同时安装) [root@master1 ~]# ...
- # Instrument Time Profiler教程之Time Profiler
Instrument Time Profiler教程之Time Profiler 一. 介绍 Time Profiler帮助我们分析代码的执行时间,找出导致程序变慢的原因,告诉我们"时间都去 ...