JavaSE高级之集合类
下面的内容是对java中的集合类进行的总结,过段时间会分享java的网路编程,多线程等内容,欢迎批评指正。
1.Java中的集合是用来存放对象的,即集合是对象的集合,对象是集合的元素,java API集合类位于java.util包中。
2.常用集合类:
Collection接口,List接口, Set接口,Map接口。接口类结合泛型的使用
3.集合和数组的区别在于集合的长度是动态扩充的,数组中可以存放基本数据类型和引用数据类型,集合中只能存放引用数据类型。
4.java中的集合层次关系
接口:
Iterator
|-Collection
| |-Lis
| | |-ArrayList
| | |-LinkedList
| | |-Vector
| | |-Stackt
| |-Set
| |-HashSet
| |-TreeSet
|-ListIterator
Map
|-HashMap
|-HashTable
|-TreeMap
Collection接口:
1.一个Collection对象中可以放不同类型的数据,是Set接口和List接口的父类,元素是否有序是否允许重复取决于具体的实现
2.Set 为集合,元素无序且不允许重复,List 元素有序,允许重复。
3.Collection中的常用方法如下:
添加元素:add(element : object): Boolean
移除元素:remove(element : object): Boolean
元素个数:size () : int
判断是否为空:isEmpty() : Boolean
判断是否存在该元素:contains(element : objects) : Boolean
迭代器:iterator() : iterator
产生一个包含所有元素的数组:object[] toArray();
List接口
添加元素: add(index : int. element : object)
移除元素:remove(index : int) : object
获取元素:get(index : int)
设置元素:set(index : int , element:objects);
获取元素的索引: indexOf(element : object) : int
迭代器: listIterator() : ListIterator
Iterator 接口:
Iterator称为迭代器,便于实现对容器元素的遍历,所有实现了接口Collection的集合类都有iterator()方法,返回一个实现了Iterator接口的对象,Iterator在遍历中只能单向进行,Iterator接口是为遍历设计的可以取出和删除集合中的元素,但不可以删除其中的元素
Iterator中的主要方法:
Object next() 指向集合中的下一个元素
Boolean hasNext() 判断是否还有下一个元素
Void remove() 移除集合中的元素,执行next() 后只能执行一次remove();
Collections 类:
Collections 类是类似于Arrays类的工具类,它提供一些static静态方法供集合类使用或用来操作集合类
Map接口:
Map内存储的是以键/值对这样成对出现的对象组,通过“键”对象,来查找“值”对象,Map中的“键”是唯一的,key对象和value对象关联在一起
Map接口中的常用方法:
Object put(object key, object value) 添加键值对
Object get(object key) 获取键对应的值
Set keySet() 返回此映射中包含键的Set视图
HashMap与HashTable的比较:
HashTable是线程安全的,也就是说是线程同步的,HashMap是线程不安全的
HashMap允许将一个null作为一个entry的key或者value 二HashTable不允许
如何选择集合类
Set内中存放的元素师不允许重复的,是无序的,List中的元素是有序的是允许重复的
Map的应用主要是运用键/值对进行快速查询
ArrayList和LinkedList 之间的区别在于随机查询的性能上ArrayList的性能要好,但LinkedList对中间元素的删除和添加要好
HashSet和TreeSet的主要区别在于集合内的元素是否排序
泛型的使用
泛型的作用是对集合中的类型进行限制,避免去元素时进行强制转换
HashMap与Set的结合使用
package cn.sdut.lu; import java.util.HashMap;
import java.util.Iterator;
import java.util.Set; public class HashMapDemo { public static void main(String[] args) { //HashMap实例化
HashMap hm = new HashMap(); //往集合中添加元素
hm.put(1,new Person("aa",12));
hm.put(2,new Person("vv",15)); //获取键视图
Set s = hm.keySet(); //利用迭代器遍历键视图
Iterator I = s.iterator(); //遍历键视图取得键值
while(I.hasNext()){
System.out.println(hm.get(I.next()));
}
}
}
JavaSE高级之集合类的更多相关文章
- JavaSE高级1
内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...
- javaSE高级篇4 — 反射机制( 含类加载器 ) — 更新完毕
反射机制 1.反射机制是什么?----英文单词是:reflect.在java.lang包下---这才是java最牛逼的技术 首先提前知道一句话----在java中,有了对象,于是有了类,那么有了类之后 ...
- javaSE高级篇7 — 设计原则和设计模式 — 设计模式慢慢更( 这是思想层次篇 )
1.什么是设计原则? 设计原则就是面向对象的原则嘛,即:OOP原则 换句话说:就是为了处理类与类之间的关系( 包括接口.类中的方法 ) 2.OOP设计原则有哪些? 1).开闭原则:就是指对拓展开放.对 ...
- JavaSE高级之GUI编程
下面主要用到了java中的swing进行界面设计,当然java的GUI不如C#的设计的好看,不过原理还是要会的. 1. GUI Graphical User Interface 用户图形界面 a) 主 ...
- JAVASE高级2
反射概述 什么是反射? 反射的的概念是有smith1982年首次提出的,zhuy主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAVA反射机制是运行状态中,对于任意一个类,都能够知道这 ...
- javase高级
静态代理:需要代理对象和目标对象实现一样的接口.同一个接口,一个目标类实现,一个代理类实现,代理类除了目标类的方法还有别的增强方法优点:可以在不修改目标对象的前提下扩展目标对象的功能.缺点:1冗余.由 ...
- javase高级技术 - 泛型
在写案例之前,先简单回顾下泛型的知识 我们知道,java属于强变量语言,使用变量之前要定义,并且定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值. 所谓“泛型”,就是“宽泛的数据类 ...
- javase高级技术 - 反射
在说反射之前,必须得先说说java的类加载器,类加载器的定义:将.class文件加载到内在中,并为之生成对应的Class对象. 一般有三种 1 Bootstrap ClassLoader 根类加载器也 ...
- 面试复习题(二)JavaSE高级(未完成)
一.Java中的反射 3.说说你对Java中反射的理解 Java中的反射首先是能够获取到Java中要反射类的字节码,获取字节码有3种办法. class.forName(className) 类名.cl ...
随机推荐
- 创建Chrome启动器
今天清理垃圾时不知怎么把chrome启动器删除了,现在要重新创建一个 1.在桌面创建一个chrome.exe的快捷键方式,属性更改目标为: "C:\Program Files (x86)\G ...
- 优化curl并发使用
经典curl并发的处理流程:首先将所有的URL压入并发队列, 然后执行并发过程, 等待所有请求接收完之后进行数据的解析等后续处理. 在实际的处理过程中, 受网络传输的影响, 部分URL的内容会优先于其 ...
- Python数据分析
一.安装Anaconda 1.下载:https://www.continuum.io/downloads 2.命令行创建和启动环境 conda create --name py35 python=3. ...
- xml中DTD解析
DTD的作用是"文档类型的定义" DTD申明始终以<!DOCTYPE开头(开头后空一格). 本标签一共有三种写法 一.内部DTD: <!DOCTYPE 根元素 [ 文档 ...
- Allegro之测量时显示两种单位(mil & mm)
首先确认你工程默认的单位是mil还是mm 例子为mils 在下面的选项中选择另外一项mm即可(如本身是mm,这里选择mils) 点击Apply,然后OK,操作测量功能,如下图所以效果:
- SMA、SMB、SMC封装的二极管
以常见的贴片肖特基二极管SS14 SS24 SS34为例,三种管子区别主要在电流上,有三种封装:SMA.SMB.SMC. 从成本和体积来说,优先选用最小尺寸的SMA/DO-214AC封装,其他封装一般 ...
- canvas初探2
2.2 canvas的绘图环境 canvas仅仅只是一个绘图的容器,其内存在一个绘图环境,该环境对象提供了全部的绘图功能. 目前canvas的绘图环境是2d,但canvas规范在着手准备支持其他类型的 ...
- Hbuilder开发HTML5 APP之图标和启动页制作
1.点击项目下的"manifest.json"文件,会出现自动化的配置工具: 2.点“图标配置“,上传制作好的图标文件,自动生成不同大小的ico,这个要赞下! 3.启动图片(spl ...
- XML数据的解析
XML数据的解析 相比于JSON数据解析而言,XML数据解析可能会让更多的童鞋感觉到吃力,对我来说,同样认为JSON数据好像让人感觉比较友好,不过对于程序开发者来说,无非就是这两种数据解析占比较大的部 ...
- 阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访
项目主页:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm 我的博客:http://javatar.iteye.com