黑马程序员——JAVA基础——集合

----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一、关于java中的集合类

首先看一下,大致的框架流程图

通过这些我们可以看出来,通常我们经常采用的vector、arraylist、hashset,treeset,hashmap,hashtable,treemap、linkedlist类

关于vector和arraylist对比,vector是线程安全的,vector通过遍历,性能更高。

ArrayList和Vector功能类似,

Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。

所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能

ArrayList不具备线程同步的安全性,但速度较快。

Vector具备线程安全。

而对于hashmap和hashtable

Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

  

  也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。

  

  第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

  

  一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。

二、对于java集合框架

他们之间的比较:

    是否有序 是否允许元素重复
Collection
List
Set AbstractSet
  HashSet
  TreeSet 是(用二叉排序树)
Map AbstractMap 使用key-value来映射和存储数据,key必须唯一,value可以重复
  HashMap
  TreeMap 是(用二叉排序树)

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-09 16:25:41

黑马程序员——JAVA基础——集合的相关文章

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员---java基础--集合、数组、字符串的综合面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 这道题综合了集合,数组,字符串,字符串缓冲区,自动装箱等知识点,你把这道题做会了,java基础你也就学的差不多了. 问题: 自定义一个段由小写字母组成的字符串统计每个字母出现的次数. 例如:abc,输出结果为:a(1)b(1)c(1) 代

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

黑马程序员——java基础---集合框架

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合框架 概念:集合框架是Java中为了方便对集合进行存储.操作而形成的体系.集合是针对对象最常见的一种存储形式. 数组和集合类同是容器,区别在哪里?     相同点:               集合和数组都是容器,都可一存储对象(对象引用).     不同点:               数组长度固定,集合长度可变.               数组可以存储基本数据类型,集合却只能存储

黑马程序员——Java基础---集合(一)---Collection、set、list

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        集合框架 java中有许多的集合,也称为容器,下图便是集合框架的构成及分类. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.

黑马程序员------java基础----集合

  ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------  集合框架 为什么会出现这么多容器? 因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存

黑马程序员——Java基础---集合(二)------Map集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Map集合 一.概述 1.简述: Map<K,V>集合是一个接口,和List集合及Set集合不同的是,它是双列集合,并且可以给对象加上名字,即键(Key) 2.特点: 1)该集合存储键值对,一对一对往里存 2)要保证键的唯一性

黑马程序员-java基础-集合Set

-----Java培训.Android培训.iOS培训..Net培训.期待与您交流! Set      Set中存放的元素无序,不可重复.取出方式只能说迭代器. Set体系   ——| Set 子接口,特点在于元素无序,元素不可重复         ——| HashSet:底层数据结构是哈希表,是线程不安全的,不同步. ——| TreeSet:可以对Set集合中的元素进行排序(红黑树) HashSet保证元素唯一性原理 保证元素唯一性主要是通过元素hash值,当hash值不同时认为是不同元素,当