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与平台无关,可 ...
随机推荐
- 关于ONION/Wncry勒索病毒
1.通告 2017年5月12日起,在国内外网络中发现爆发基于Windows网络共享协议进行攻击传播的蠕虫恶意代码,这是不法分子通过改造之前泄露的NSA黑客武器库中“永恒之蓝”攻击程序发起的网络攻击事件 ...
- Linux 下安装RabbitMQ 3.6.1
1.安装erlang 依赖 yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel 2.安装erlang ### 设 ...
- C#超简单方法实现两个richtextbox控件滚动条同步滚动
此文章属于作者原创,转载请注明,谢谢 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者 ...
- (HTTPS)web 项目如何实现https
HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解密,因此,所传送的数据不容易被网络黑客截获和破解.本文介绍HTTPS的三种实现方法.方法一 静态超链 ...
- WinForm笔记
Hi All, 分享一个学WinForm时的笔记: 1. 关键字 partial:是部分类,允许将一个类放在多个文件当中. 2. MessageBox()类相当于Console.WriteLine() ...
- 用2D动画做遮罩
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法
本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...
- Python内置函数进制转换的用法
使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...
- 【easyui】Tab的tools按钮刷新当前tab
点击刷新按钮,刷新当前Tab选项卡 /** * Name 选项卡初始化 */ $('#home-tabs').tabs({ tools: [{ iconCls: 'icon-reload', bord ...
- JSP/Servlet Web 学习笔记 DaySix —— EL表达式
1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...