菜鸟日记之 java中的集合框架
java中的集合框架图

如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合
Collection单列集合:继承了Iterator接口所以具有了iterator()方法 ,该方法返回一个Iterator<T>,这个接口具有
HasNext (),next(),remove()3个方法可以在实现类里完成实现。
hasNext():判断是否有下一个元素

cusor是当前的操作下标
next():读取下一个元素

remove():删除参数

lastret为上个操作的下标
Collection有两个子接口set和list
set:储存唯一,不要求有序的一组对象
set存储的是元素的引用,如两个元素的引用相等,或者其值相等,hash值也想相等,则set只保存一个同理set集合中只有一个null
例:
Set set=new HashSet
String a=" ";
String b=a;
set.Add(a);
set.add(b);
//输出集合set的元素个数
System.out.println(set.size()); //结果是1个 :两者的引用为一个所以只能添加一个
list:存储一组不唯一,但有序的对象
list的两个实现类:
ArrayList:与数组相同的存储方式,但是完成了存储集合的大小可变的改变比数组更灵活。
LinkedList:链式储存,集合的每一项都储存了下一项的引用,更利于元素的新增和删除操作,相比后ArrayList查询和修改,LinkedList新 增和删除
其实在ArrayList之前还有一个Vector集合类,他与ArrayList基本相同,最大的区别就是Vector是线程安全的,而ArrayList是线程不安全 的。ArrayList轻安全,而速度快,Vector线程安全,但速度慢。
Map:双列集合: 集合中的每一项都是成对的key ,value Map接口并不继承Iterable接口或实现该接口所以不能直接进行遍历
key:有唯一,不要求有序
value:不唯一,不要求有序
Map集合遍历的三种方法:
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("CN", "中华人民共和国");
map.put("UK","联合国");
//方法1 双列集合无法遍历了?那就通过方法把他转成单列 ! 用集合名.entryset方法 得到Set<Entry<String, String>>的返回值
for (Entry item : map.entrySet()) {
System.out.println(String.format("key的值是%s\tvalue的值是%s",item.getKey(),item.getValue()));
}
//方法2 通过得到key键的集合,然后通过Map的方法map.get(key)用key得到value
for (String key : map.keySet()) {
System.out.println(String.format("key的值是%s\tvalue的值是%s",key,map.get(key)));
}
//方法3for循环中自动实现了迭代器,如不用for循环,那就手动完成迭代器操作
Iterator<String> keys=map.keySet().iterator();
while(keys.hasNext()){
String item=keys.next();
System.out.println(String.format("key的值是%s\tvalue的值是%s",item,map.get(item)));
}
}
如果只是想遍历value的值那直接使用 map.values()方法就行了;
注:所有继承或实现了Iterable类的集合类都可以用迭代器进行遍历
例:
ArrayList(继承)- AbstractList -(在这个ArrayList的父类中实现了继承自 Iterable的iterator方法,并得到了该方法返回的类Iterator及其的3个方法,实现了他们之后使自身可使用迭代器) - implements(实现) -- List extends (继承) - Collection extends (继承)- Iterable 所有可以使用迭代器的集合类都有相似的继承,实现关系。
菜鸟日记之 java中的集合框架的更多相关文章
- Java中的集合框架(上)
Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- Java中的集合框架(下)
学生选课--判断Set中课程是否存在 package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays ...
- Java中的集合框架-Collection(一)
一,Collection接口 在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等. 基于数组的这些局限性,Java框架就产生了用于 ...
- JAVA 中的集合框架
java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 一.集合与数组 数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知 ...
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
随机推荐
- 论SOA架构的几种主要开发方式【转】
面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系 ...
- [LeetCode] 16. 3Sum Closest 解题思路
Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...
- 解popstar
游戏介绍 http://baike.baidu.com/view/9773832.htm 实现过程: 实现完整的游戏逻辑,包括消除,合并等,也就是实现一个完整的游戏功能. 找出每个连通的星星区域,每个 ...
- 普通Windows控制台窗口运行nmake编译VC
我的GDAL编译都是在VS2012提供的prompt windows里面运行nmake完成的.但是如果想将编译自动化,放到Jenkins里面怎么办呢?首先没有VS2012的工程,也不想费力去生成一个, ...
- oracle Imp和exp以及导入常见的错误
一 1) 数据库对象已经存在 一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等; 数据库对象已经存在, 按缺省的imp参数, 则会导入失败 如果用了参数ignore=y ...
- 推荐一个可视化的学习Git的好网站:LearnGitBranching
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:推荐一个可视化的学习Git的好网站:LearnGitBranching.
- JavaScript读取txt文本文件方法详解
http://blog.163.com/sophie8910@126/blog/static/8304612620122834121264/ 第一步:创建一个可以将文件翻译成文件流的对象. Var f ...
- Java中NaN和-0.0f的比较问题
简单的说,比较两个int型或long型的数据没有什么问题,可以用==来判断,但对浮点数(float与double)来说,需要对Float.NaN和0.0这个两个特殊数字作额外的处理.Float.NaN ...
- PureMVC(JS版)源码解析(十二):Facade类
MVC设计模式的核心元素在PureMVC中体现为Model类.View类和Controller类.为了简化程序开发,PureMVC应用Facade模式. Facade是Model\View\Co ...
- expect批量分发公钥
sshkey.exp #!/usr/bin/expect# 由于是多台服务器,需要在shell脚本中循环调用该脚本 if { $argc != 2 } { send_user "usage: ...