​下面的内容是对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. wex5中的星星评分

    新建一个空白的.w文件,然后在页面上放5个img星星图片 重要的是图片路径不能是绝对路径,要用相对路径,不然js操作的时候会出bug 添加两个label标签(标签随你挑,在这我就用label) 你到时 ...

  2. LINUX 编译安装 PHP 环境

    今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...

  3. ajax 后台正常执行 错误类型却是404

    后台执行importExcel,明明方法执行成功,但是前台却提示404 @RequestMapping("/import") public Json importExcel(@Re ...

  4. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  5. 关于call和apply函数的区别及用法

    call和apply函数是function函数的基本属性,都可以用于更改函数对象和传递参数,是前端工程师常用的函数.具体使用方法请参考以下案列: 例如: 申明函数: var fn = function ...

  6. [LintCode] Trailing Zeroes 末尾零的个数

    Write an algorithm which computes the number of trailing zeros in n factorial. Have you met this que ...

  7. 关于兼容IE的一些策略

    --css 盒子模型下的 box-sizing 属性,只兼容到ie8: -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -o- ...

  8. 猥琐的wordpress后门分享

    https://www.t00ls.net/thread-37312-1-1.html 一个可以自动调用管理员帐号登录wordpress后台的方法. <?php require('../../. ...

  9. ecma6 yield

    function * generator(k){ console.log('begin'); var x = yield k; console.log('x:',x); var y = yield x ...

  10. Android再学习

    1.点击事件的几种实现方式 Button Btn1 = (Button)findViewById(R.id.button1);//获取按钮资源 Btn1.setOnClickListener(new ...