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 ...
随机推荐
- java分享第二十天(build.xml的语法及写法)
通常情况下,Ant构建文件build.xml应该在项目的基础目录.可以自由使用其他文件名或将构建文件中其他位置.在本练习中,创建一个名为build.xml 在电脑的任何地方的文件. <?xml ...
- python lxml install
之前记得安装libxslt和libxml yum install libxml* -yyum install libxslt* -y wget http://lxml.de/files/lxml-3. ...
- Cannot run gnome extension in browser
Error Message: We cannot detect a running copy of GNOME on this system, so some parts of the interfa ...
- Java 用程序给出随便大小的10 个数,序号为1-10,按从小到大顺序输出,并输出相应的序号?
import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.uti ...
- HDU--洗衣服
洗衣服 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- MySQL字符集
字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...
- Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....
一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...
- while(cin.eof)出错 poj
zoj遇到c++如何判定输入流结尾的问题,一不小心就超时了 楼下的代码可以通过zoj #include<iostream> using namespace std; int main(){ ...
- SQL Server 事件通知(Event notifications)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 事件通知监控DDL(NotifyQue ...
- 微软StockTrader应用程序
这是一个采用 .NET Enterprise Application Server 技术的端到端示例应用程序.应用程序代码可以从 这里 下载. 代码中演示了WCF服务和移动开发,包括用Xamarin ...