Java集合框架入门介绍(一)
Java工具包(java.util)提供了强大的数据结构,主要有以下几种接口或类
- 枚举Enumeration 接口 从数据集合中取回一系列连续值的方法
- 位集合 BitSet 可以单独清楚或设置的位和标志
- 向量Vector 和传统数组类似,大小可以动态改变,初始不用指定大小,支持索引访问
- 栈 Stack 后进先出FILO的类
- 字典 Dictionary 抽象类定义键值对映射的数据结构
- 哈希表Hashtable java2之后又重构了此类,类似HashMap,同步
- 属性Properties 类,属性列表中,每个键值对都是String类型的。
以上这些都是传统遗留下来的,在java2引入一种新的框架-集合框架Collection Framework。
集合框架被设计成要满足一下几个要求:
- 高性能。基本集合的实现(动态数组,链表,树,哈希表)也必须高性能。
- 允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
- 易于扩展和适应。
因此,整个集合框架是围绕一组标准接口设计而成的,开发者可以直接使用这些接口的标准实现,如ArrayList、LinkedList、HashSet、HashMap、HashTable等,也可以通过这些接口取实现自己的集合。

Java集合框架可以分为两大类容器
- 集合Collection 存储一个元素集合 又可以分为 Set List Queue 三中子类型。 下面是一些抽象类,最后是具体实现类
- 图Map 存储键值对映射
所有的集合框架都包含下面这些内容
接口:是代表集合的抽象数据类型(ADT),如Collection,Set,List,Map。这些不同的接口以不同方式操作集合。
实现(类): 接口的具体实现,是可以重复使用的数据结构。
算法:实现集合接口的对象里的方法执行一些有用的计算,如搜索和排序,这些方法以多态形式存在。

集合接口
Collection 最基本的集合接口,一个Collection代表一个Object数组。Collection接口存储一组不唯一,无序的对象。
Set接口不保存重复的元素,即存储一组唯一,无序的对象。
List接口是一个有序的Collection ,能够索引访问元素,精确定位元素位置,元素可以重复,存储一组不唯一,有序(插入顺序)的对象。(包括数组list和链表list)
SortedSet接口继承于Set,保存有序。
Map接口 存储一组键值对象,提供key到value的映射
Map.Entry描述一个在Map中的一个元素(键值对对象),Map的内部类。
SortedMap 继承于Map,内部维持key有序。
Set和List的区别
Set存储一组无序的,唯一的对象;List存储一组有序(插入顺序),元素可以重复的对象。
Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变(HashSet、TreeSet)
List和数组类似,可以动态增长,查找效率高,删除插入效率低,会引起其他元素位置变动。(ArrayList,LinkedList,Vector)
集合的遍历
一般数组遍历是使用for或增强for,这两个方法也可以用在集合中,但还有一种迭代器遍历集合框架元素,迭代器是一个对象,实现了Iterator或者ListIterator接口。
迭代器,使你能够通过循环来得到或删除集合中的元素。ListIterator继承Iterator,双向遍历。
实例,集合的遍历
- package com.study.day04;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- /**
- * @author gaochaochao
- * @date 2018年11月4日 下午10:05:34
- * @description 测试集合的遍历
- */
- public
class ArrayListTest { - enum day{monday,tueday,wednesday,thursday,friday,saturday,sunday};
- public
static
void main(String [] args) { - List<String> list=new ArrayList<>();
- list.add("monday");
- list.add("tuesdat");
- list.add("wednesday");
- list.add("thursday");
- list.add("friday");
- list.add("saturday");
- list.add("sunday");
- //集合遍历方法1 增强for
- for(String s:list) {
- System.out.print(s);
- }
- System.out.println();
- //集合遍历方法2 普通for
- for(int i=0;i<list.size();++i) {
- System.out.print(list.get(i));
- }
- System.out.println();
- //集合遍历方法3 迭代器遍历
- for(Iterator<String> it=list.iterator();it.hasNext();) {
- System.out.print(it.next());
- }
- System.out.println();
- //集合遍历方法四 转化成数组 在遍历
- String[] arrayStr=new String[list.size()];
- list.toArray(arrayStr);
- for(String s:arrayStr) {
- System.out.print(s);
- }
- System.out.println();
- LinkedList<String> linkedList=new LinkedList<>(list);
- for(String s :linkedList) {
- System.out.print(s);
- }
- System.out.println();
- for(Iterator<String> it = linkedList.iterator();it.hasNext();) {
- System.out.print(it.next());
- }
- System.out.println();
- //Map遍历
- Map<String,day> map=new HashMap<>();
- map.put("星期一",day.monday);
- map.put("星期二",day.tueday);
- map.put("星期三",day.wednesday);
- map.put("星期四",day.thursday);
- map.put("星期五",day.friday);
- map.put("星期六",day.saturday);
- map.put("星期七",day.sunday);
- //只输出map的values
- for(day d:map.values()) {
- System.out.print(d);
- }
- System.out.println();
- //使用增强for遍历map,输出key--> value
- for(Entry<String,day> entry: map.entrySet()) {
- System.out.print(entry.getKey()+"
"+entry.getValue()); - }
- System.out.println();
- //使用iterator遍历,输出key-->value
- for(Iterator<Entry<String, day>> it = map.entrySet().iterator();it.hasNext();) {
- Entry<String,day> element=it.next();
- System.out.print(element.getKey()+"
"+element.getValue()); - }
- System.out.println();
- }
- }
Java集合框架入门介绍(一)的更多相关文章
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- 【转】Java集合框架List,Map,Set等全面介绍
原文网址:http://android.blog.51cto.com/268543/400557 Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含 ...
- 34、Java集合框架List,Map,Set等全面介绍(转载)
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.C ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架介绍。Java Collection Frameworks = JCF
Java集合框架 = Java Collection Frameworks = JCF . 为了方便理解,我画了一张思维脑图.
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- Java集合框架的总结
本篇文章先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析.当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进 ...
- 【JAVA集合框架之List】
一.List接口概述. List有个很大的特点就是可以操作角标. 下面开始介绍List接口中相对于Collection接口比较特别的方法.在Collection接口中已经介绍的方法此处就不再赘述. 1 ...
- Java集合框架使用总结
Java集合框架使用总结 前言:本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看JavaAPI文档. 一.概述数据结 ...
随机推荐
- Springmvc和poi3.9导出excel并弹出下载框
Springmvc 和 poi3.9 用java程序从数据库导出数据到excel(在博客园的第一篇原创博客) @RequestMapping(value = "/importexcel.ht ...
- Swift学习笔记6
1.用类型检查操作符(is)来检查一个实例是否属于特定子类型.若实例属于那个子类型,类型检查操作符返回 true,否则返回 false. 2.某类型的一个常量或变量可能在幕后实际上属于一个子类.当确定 ...
- vue确认密码
rules: { pwd:[{ required:true, message:'创建密码',trigger:'blur' }], cpwd:[{ required:true,message:'确认密码 ...
- Spark记录-Spark性能优化解决方案
Spark性能优化的10大问题及其解决方案 问题1:reduce task数目不合适解决方式:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism.通常,r ...
- Multi-Nim游戏结论不变证明
Nim取石子游戏结论: 若n堆石子的异或和为0,则先手必胜:否则,先手必败 加入新规则: 每次取完石子后,可以将取的那一堆的石子 分为多堆,也可以不分 结论: 同Nim取石子游戏结论 证明: 如果异或 ...
- numpy笔记—np.sum中keepdims作用
A = np.random.randn(4,3) B = np.sum(A, axis = 1, keepdims = True) 我们使用(keepdims = True)来确保 A.shape 是 ...
- luogu P1344 [USACO4.4]追查坏牛奶Pollutant Control
传送门 要求断掉某些边使得两个点不连通,显然是最小割 但是要求选的边数尽量少,,, 可以考虑修改边权(容量),即把边权\(c\)改成\(c*(m+1)+1\) 没了 // luogu-judger-e ...
- Ubuntu16.04搭建QingdaoU(docker一键式部署)
QDUOJ已经开源到2.0版本了,下面的教程不再适用,仅做纪念吧! 这几天装什么Linux.开源OJ上瘾了...竟然没去刷题...嗯,做好记录就写题啦! 先上原始网站的图: 风格不错,很符合我的口味. ...
- mysql外键(FOREIGNKEY)使用介绍
原文地址:http://www.2cto.com/database/201501/367791.html 一.基本概念 1.MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种.不 ...
- Go 语言读书笔记
Go语言的设计理念很明确,就是将动态类型语言的编程容易度和静态类型语言的安全效率结合起来. Go语言,又称Golang,是Google开发的一款静态强类型.编译型.并发型,并具有垃圾回收机制的 ...