一、Java 中的集合类

  1、集合概述

    Java中集合类是用来存放对象的
      集合相当于一个容器,里面包容着一组对象 —— 容器类
      其中的每个对象作为集合的一个元素出现
      Java API提供的集合类位于java.util包内

  2、Java 中数组与集合的比较

    数组也是容器,它是定长的,访问较快,但是数组不会自动扩充
    数组可以包含基本数据类型或引用类型的对象,而集合中只能包含引用类型的对象

  3、Java 中集合框架层次结构

二、Colleciton 接口

  1、一组称为元素的对象
  2、一个Collection中可以放不同类型的数据
  3、是Set接口和List接口的父类
  4、是否有特定的顺序以及是否允许重复,取决于它的实现
  5、Set - 无序的集合;不允许重复 HashSet
  6、List - 有序的集合;允许重复
    ArrayList、
    LinkedList

  1、Collection 接口

  2、Set 接口

    (1)Collection的子接口
    (2)用来包含一组 无序无重复 的对象
      无序 — 是指元素存入顺序和集合内存储的顺序不同
      无重复 — 两个对象e1和e2,如果e1.equals(e2)返回true,则认为e1和e2重复

  3、Set 接口的实现类

    HashSet — HashSet的特性在于其内部对象的散列存取,即采用哈希技术
    TreeSet — TreeSet存入的顺序跟存储的顺序不同,但是存储是按照排序存储的

  4、List 接口

    Collection的子接口
      用来包含一组 有序有重复 的对象
      List中的元素都对应一个整数型的序号,记载其在容器中的位置,可以根据序号存取容器中的元素
      List有两种主要的集合实现类:
        ArrayList
        LinkedList

  5、List 接口的实现类

    1、ArrayList是线性顺序存储的,是一种线性表
    1、它的特性和数组很接近,数组大小是不变的,而ArrayList的大小是可以动态改变的

    3、是数据结构中链表的java实现
    4、相对于List来说,LinkedList最主要的功能方面的增强是可以在
      List的头部和尾部添加、删除、取得元素,直接提供了这些方法的实现。所以它可以非常方便的实现我们数据结构中的常见的
      Stack(栈)、queue(队列)等

    5、ArrayList 与 LinkedList的比较

      存储结构
        ArrayList是线性顺序存储
        LinkedList对象间彼此串连起来的一个链表
      操作性能
        ArrayList适合随机查询的场合
        LinkedList元素的插入和删除操作性高
      从功能上,LinkedList要多一些

  6、Iterator 接口

    1、Iterator对象称作迭代器,用来方便的实现对容器内的元素进行遍历操作
    2、所有实现了Collection接口的集合类都有一个iterator( )方法,返回一个实现了Iterator接口的对象
    3、Iterator对象实现了统一的一个用来遍历Collection中对象的方法
    4、Iterator是为遍历而设计,能够从集合中取出元素和删除元素,但是没有添加元素的
功能
    5、Iterator的功能上比较简单,使用中,只能单向移动

    6、 Iterator 接口

三、Collections 类

  Collections类是类似于Arrays类的公用工具类 ,它提供了一些static方法供集合类使用或操作集合类 。

  Collections 类中的方法

四、Map 接口

  Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元素),通过“键”对象来查询“值”对象

  Map是不同于Collection的另外一种集合接口
  Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一起的
  Map接口有两个实现:
    HashMap — key/value对是按照Hash算法存储的
    TreeMap — key/value对是排序(按key排序)存储的

   1、Map 接口

  2、Map 接口的实现类

    基于哈希表的 Map 接口的实现

    HashMap的构造方法

      HashMap 变量名 = new HashMap() ;
      HashMap 变量名 = new HashMap(int capacity) ;
      HashMap 变量名 = new HashMap(int capacity,float lodeFactor) ;
      HashMap 变量名 = new HashMap(Map m) ;

  3、HashMap 与 TreeMap 的比较

    Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
    Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。
    HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

五、集合类的选择

  使用集合类时常见的异常

六、泛型的使用

  1、集合在使用上的问题

    集合中的add( )方法接受的是一个Object对象的参数 ,在获取集合中的对象时,必须进行造型(强制类型转换)操作。
    造型操作可能出现问题,一般在程序运行时才能发生,发现问题比较困难。
  2、集合中泛型的使用
    在对象放入集合前,为其作个限制
    在获取集合中的对象时,不用进行造型的操作
    当有不同类型的对象添加到集合中的时候,编译时就能检查出错误

    泛型经常被称为参数化类型,它能够像方法一样接受不同类型的参数。

    定义方式
      ArrayList<E> 变量名 ;

    E是变量类型
      ArrayList<String> arr;
      arr = new ArrayList<String>();
      HashMap<Integer,String> hm = new HashMap<Integer,String>();

Java 高级应用编程 第二章 集合的更多相关文章

  1. Professional.WebGL.Programming-Chapter 2(高级WebGL编程——第二章)

    (目前发现一些文章被盗用的情况,我们将在每篇文章前面添加原文地址,本文源地址:http://www.cnblogs.com/idealer3d/p/3508251.html) 这一章主要通过创建一个三 ...

  2. Java 高级应用编程 第一章 工具类

    一.Java API Java API简介 1.API (Application Programming Interface) 应用程序接口 2.Java中的API,就是JDK提供的各种功能的Java ...

  3. 《JavaScript高级程序设计》——第二章在HTML使用JavaScript

    这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...

  4. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  5. [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】

    第二章Shell的结构  “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...

  6. 使用MYSQL数据库实现编程----第二章第三章课堂知识小总结

    第二章1:创建数据库create database myschool 2.数据类型  1.整型 int  2.小数 double  精确度要求高的 ----Decimal(18,4)  2222222 ...

  7. 《深入理解Java虚拟机》笔记--第二章、Java内存区域与内存溢出异常

    Java程序员把内存的控制权交给了Java虚拟机.在Java虚拟机内存管理机制的帮助下,程序员不再需要为每一个new操作写对应的delete/free代码,而且不容易出现内存泄露和溢出. 虚拟机在执行 ...

  8. Java面向对象编程 第二章 第一个Java应用

    2.1创建Java源文件 Java应用由一个或多个扩展名为".java"的文件构成,这些文件被称为Java源文件,从编译的角度,则被称为编译单元. 本章包含两个Java源文件:Do ...

  9. JAVA / MySql 编程——第二章 初始MySQL

    1. MySQL:        ●  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.            MySQL最流行的关系型数据库管理系统, ...

随机推荐

  1. OWASP出品:Xenotix XSS漏洞测试框架及简单使用

    OWASP Xenotix XSS Exploit Framework是一个高效的跨站脚本漏洞(XSS)检测和攻击测试框架.它通过特有的三大浏览器引擎(包括Trident, WebKit和Gecko) ...

  2. EOJ-3300 奇数统计(高维前缀和)

    题目链接: https://acm.ecnu.edu.cn/problem/3300/ 题目大意: 给n个数,求在n个数中选两个数(可重复),使得这两个数的组合数是奇数,求总共有多少种取法. 解题思路 ...

  3. Mysql分表和分区的区别、分库分表介绍与区别(转)

    分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这 ...

  4. HttpServletRequest的随手记

    request对象的三个主要的方法: getParameter(String name):获取请求参数名字对应的参数值.只获取一个.如果名字对应有多个参数值的话,那么只会获取参数数组中的第一个.比如一 ...

  5. GCD学习(五) dispatch_barrier_async

    先看段代码 dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISP ...

  6. Yii中的relations方法

    以Blog示例: 重点看注释 User类中的relations方法如下 <span style="font-size:18px;background-color: rgb(255, 2 ...

  7. 【[AHOI2009]中国象棋】

    计数类dp还是要多写啊 看上去并没有什么思路,加上被题解里状压的标签迷惑了,于是就去看了一眼题解里设计的状态 之后就很好做了 首先先搞明白这道题的本质,就是对于任何一行任何一列炮的个数都不能超过\(2 ...

  8. Entity Framework——执行sql语句

    EF版本:6.0.0 EF对大量数据或多表连接一次操作耗时较大,或要求响应时间尽可能小,因此采用EF框架执行SQL语句的方案 1DbContext.Database 这个类包含了大量的操作方法,见截图 ...

  9. 相机姿态估计(Pose Estimation)

    (未完待续.....) 根据针孔相机模型,相机成像平面一点的像素坐标p和该点在世界坐标系下的3D坐标P有$p=KP$的关系,如果用齐次坐标表示则有: $$dp=KP$$ 其中d是空间点深度(为了将p的 ...

  10. 转-四种方案解决ScrollView嵌套ListView问题

    本人网上用的ID是泡面或安卓泡面,学习一年半之前开始从事Android应用开发,这是我写的第一篇Android技术文章,转载请注明出处和作者,有写的不好的地方还请帮忙指出,谢谢. 在工作中,曾多次碰到 ...