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与平台无关,可 ...
随机推荐
- ASP.NET Core 菜鸟之路:从Startup.cs说起
1.前言 本文主要是以Visual Studio 2017 默认的 WebApi 模板作为基架,基于Asp .Net Core 1.0,本文面向的是初学者,如果你有 ASP.NET Core 相关实践 ...
- 【设计模式】单一职责原则(SRP)
单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...
- 在Eclipse如何实现在xml文件实现代码提示
通常我们创建xml文件时, 总会在编辑代码的时候不能像编辑Java文件那样进行自动提示或者补全.其实这个是可以实现的,下面我就以struts2.xml进行示范: 1.点击"winbdows& ...
- Java实现的高效计数器
本文转载地址: http://blog.csdn.net/snarlfuture/article/details/17049731 在统计来自数据库或文本中某些内容的频率时,你可 ...
- 关于Cookie的知识的总结
Cookie的类型 会话cookie和持久cookie 会话cookie是一种临时cookie,它记录了用户访问站点时的设置和偏好,当用户退出浏览器时,会话cookie就会被删除. 持久cookie的 ...
- 001---Hibernate简介( 开源O/R映射框架)
该系列教程是使用hibernate3,hibernate4和3有区别(集成spring,使用等),请注意 001---Hibernate简介(开源O/R映射框架) ORM(Object Relatio ...
- Python爬虫01——第一个小爬虫
Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...
- PHP开发微信模版消息换行的问题
微信是个坑!微信是个坑!微信是个坑!重要的时间说三遍 关键的地方是空白换行符到底是什么也不说,百度说是"\n":但是在发送消息的时候发现原样输出,发现json_encode对\n进 ...
- neutron flat和vxlan网络访问外网流量走向
OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.168.1 ...
- Spring Boot 学习(3)
文 by / 林本托 Tips 做一个终身学习的人. Tips 代码路径:https://github.com/iqcz/Springbootdemo/tree/master/code01/ch3 W ...