​下面的内容是对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高级之集合类的更多相关文章

  1. JavaSE高级1

    内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...

  2. javaSE高级篇4 — 反射机制( 含类加载器 ) — 更新完毕

    反射机制 1.反射机制是什么?----英文单词是:reflect.在java.lang包下---这才是java最牛逼的技术 首先提前知道一句话----在java中,有了对象,于是有了类,那么有了类之后 ...

  3. javaSE高级篇7 — 设计原则和设计模式 — 设计模式慢慢更( 这是思想层次篇 )

    1.什么是设计原则? 设计原则就是面向对象的原则嘛,即:OOP原则 换句话说:就是为了处理类与类之间的关系( 包括接口.类中的方法 ) 2.OOP设计原则有哪些? 1).开闭原则:就是指对拓展开放.对 ...

  4. JavaSE高级之GUI编程

    下面主要用到了java中的swing进行界面设计,当然java的GUI不如C#的设计的好看,不过原理还是要会的. 1. GUI Graphical User Interface 用户图形界面 a) 主 ...

  5. JAVASE高级2

    反射概述 什么是反射? 反射的的概念是有smith1982年首次提出的,zhuy主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. JAVA反射机制是运行状态中,对于任意一个类,都能够知道这 ...

  6. javase高级

    静态代理:需要代理对象和目标对象实现一样的接口.同一个接口,一个目标类实现,一个代理类实现,代理类除了目标类的方法还有别的增强方法优点:可以在不修改目标对象的前提下扩展目标对象的功能.缺点:1冗余.由 ...

  7. javase高级技术 - 泛型

    在写案例之前,先简单回顾下泛型的知识 我们知道,java属于强变量语言,使用变量之前要定义,并且定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值. 所谓“泛型”,就是“宽泛的数据类 ...

  8. javase高级技术 - 反射

    在说反射之前,必须得先说说java的类加载器,类加载器的定义:将.class文件加载到内在中,并为之生成对应的Class对象. 一般有三种 1 Bootstrap ClassLoader 根类加载器也 ...

  9. 面试复习题(二)JavaSE高级(未完成)

    一.Java中的反射 3.说说你对Java中反射的理解 Java中的反射首先是能够获取到Java中要反射类的字节码,获取字节码有3种办法. class.forName(className) 类名.cl ...

随机推荐

  1. java分享第二十天(build.xml的语法及写法)

    通常情况下,Ant构建文件build.xml应该在项目的基础目录.可以自由使用其他文件名或将构建文件中其他位置.在本练习中,创建一个名为build.xml 在电脑的任何地方的文件. <?xml ...

  2. python lxml install

    之前记得安装libxslt和libxml yum install libxml* -yyum install libxslt* -y wget http://lxml.de/files/lxml-3. ...

  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 ...

  4. Java 用程序给出随便大小的10 个数,序号为1-10,按从小到大顺序输出,并输出相应的序号?

    import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.uti ...

  5. HDU--洗衣服

    洗衣服 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  7. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....

    一.堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  8. while(cin.eof)出错 poj

    zoj遇到c++如何判定输入流结尾的问题,一不小心就超时了 楼下的代码可以通过zoj #include<iostream> using namespace std; int main(){ ...

  9. SQL Server 事件通知(Event notifications)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 事件通知监控DDL(NotifyQue ...

  10. 微软StockTrader应用程序

    这是一个采用 .NET Enterprise Application Server 技术的端到端示例应用程序.应用程序代码可以从 这里 下载. 代码中演示了WCF服务和移动开发,包括用Xamarin ...