总结一下学过的java容器知识。

一、java容器框架

由于之前学习的java容器类比较混乱,先简单的整理一下java集合框架。

首先,像这种图,网上到处都是,因为这个也算比较准确吧,我也懒得自己画了,因为我觉得这个目前对我来说不重要,这么多东西,并不是都用得到,其实日常写代码就只用到过几种,像最常用的ArrayList、HashMap等,在这里我只总结一些最基础的、常用的,希望对java初学者有所帮助。常用的java容器主要分为两大类:用于单值存储的Collection和用于双值存储的Map。这两个java容器类的最基础接口,那么我们主要用到的他们的哪些实现呢?

二、Collection接口

1,Collection接口是java集合类的基础接口。

collection主要方法:

  1. boolean add(Object o)添加对象到集合
  2. boolean remove(Object o)删除指定的对象
  3. int size()返回当前集合中元素的数量
  4. boolean contains(Object o)查找集合中是否有指定的对象
  5. boolean isEmpty()判断集合是否为空
  6. Iterator iterator()返回一个迭代器
  7. void clear()删除集合中所有元素
  8. boolean containsAll(Collection c)查找集合中是否有集合c中的元素
  9. boolean addAll(Collection c)将集合c中所有的元素添加给该集合
  10. void removeAll(Collection c)从集合中删除c集合中也有的元素
  11. void retainAll(Collection c)从集合中删除集合c中不包含的元素

前7个方法都是比较常用的,Collection接口又有常用的两个子接口,List接口和Set接口。

2,List接口中的元素是有序可重复的。

List接口有三个实现类:ArrayList,LinkList,Vector。

ArrayList是基于数组接口的集合类,所以数据的查询比较快,LinkList底层是双向链表实现的,所以增删比较快。Vector和特们的不同之处是Vector是线程安全的,效率也比较低,不太常用,在java的集合类中有一个很奇怪的现象,就是往往很多线程安全的东西,都不会经常用到,人们更喜欢把线程不安全的东西用一些特殊的方法使他变得线程安全,具体什么原因,在网上也查不到,还是要加紧学习啊!

3,Set接口中的元素是不可重复的。

Set接口有两个常用的实现类:HashSet,TreeSet。

HashSet是用的最多的,TreeSet用的则比较少,前者存储的元素是无序的(基于哈希表实现),后者存储的元素是有序的(基于二叉树)。两者都是线程不安全的。

三、Map接口

1,Map接口是java双值存储的最基础接口

Map主要方法:

2,HashMap

3,HashTable

4,TreeMap

四、补充

1,重复问题

2,排序问题

3,java数据接口

https://study.163.com/course/courseMain.htm?courseId=1006190095

五、总结

实现类/特性 线程安全 存取速度 数据结构 使用频率 迭代方法
ArrayList          
LinkList          
Vector          
HashSet          
TreeSet          
HashMap          
HashTable          

java容器基础的更多相关文章

  1. 工作随笔—Java容器基础知识分享(持有对象)

    1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...

  2. Java容器基础概况

    一.什么是Java容器 书写程序时,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一个数据容器中.Java容器类是java提供的工具包,包含了常用的数据结构 ...

  3. Java容器之旅:容器基础知识总结

    下图展示了Java容器类库的完备图,包括抽象类和遗留构件(不包括Queue的实现). 常用的容器用黑色粗线框表示,点线框表示接口,虚线框表示抽象类,实线框表示类,空心箭头表示实现关系.Produce表 ...

  4. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  5. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  6. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  7. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  8. java容器---集合总结

    思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...

  9. 3)Java容器

    3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...

随机推荐

  1. 动态给某一个元素添加active

    <li class="one_data" data-id='+ navGroup.self_first_nav[i].id +'><a  href='+ navG ...

  2. 探索JS引擎工作原理 (转)

    这篇文章从相对底层的角度介绍了js引擎的工作 引入了 静态作用域 执行环境上下文(context) 等概念 , http://www.cnblogs.com/onepixel/p/5090799.ht ...

  3. WEBGL学习【十】运动模型

    <!DOCTYPE HTML> <html lang="en"> <head> <title>LWEBGL6.2, Animated ...

  4. --without-v4l ,make clean, 重新make即可。

    --without-v4l ,make clean, 重新make 2011-02-27 17:38 Error: X11 support required for GUI compilation

  5. 2015 Multi-University Training Contest 7 hdu 5378 Leader in Tree Land

    Leader in Tree Land Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  6. MySQL主要的命令(1)

    创建数据库 create database db_name; 创建数据库设置字符集 create database db_name character set utf8; 修改字符集编码 数据库导出: ...

  7. linux下sort对中文排序

    http://blog.csdn.net/luoleicn/article/details/6162358 设置: export LC_ALL=C;

  8. BigDecimal类(高精度小数)

    位置:java.math.BigDecimal 作用:提供高精度小数数据类型及相关操作 一.基本介绍 BigDecimal为不可变的.任意精度的有符号十进制数,其值为(unscaledValue * ...

  9. HDU 5372 Segment Game

    /** 多校联合2015-muti7-1004 <a target=_blank href="http://acm.hdu.edu.cn/showproblem.php?pid=537 ...

  10. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...