文档章节

Java 集合类

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 809
阅读 5
收藏 1

Java 集合类

 

 

1. 为什么要了解Java 集合类

Java 集合类提供了如线性表,链表和哈希表等基础数据结构的实现,通过它可以实现各种你想要的数据结构,如stack ,queue 等,了解Java 集合类的工作原理可以编出更高效性能的程序,另外了解其工作原理可以更好地使用它,避免因为滥用而出现性能上的问题。事实证明,很多性能上的问题都是因为使用不当引起的。

 

2.Java 集合类的概述

2.1 Java collection 的继承关系

 

Collection   
├List   
│├LinkedList   
│├ArrayList   
│└Vector   
│ 
  └Stack   
└Set  

└SortedSet

└HashSet

└TreeSet


Map   
├Hashtable   
├HashMap 

├SortedMap

  └TreeMap  
└WeakHashMap 

2.2 Java collection 概述

2.2.1 List 的简要概述

Java2 的集合框架,抽其核心,主要有三种: List 、 Set 和 Map

 

1. List 的主要特性

1) 有序的 Collection

2) 使用该接口可以精确定义元素插入的位置。

3) 用户能够通过索引来访问 List 的元素。

4) 元素允许重复,允许有 null 元素,基于 array 的 list 适合查询, linkedList 适合添加删除操作。

 

2. List 的主要方法

boolean contains(Object o);

Iterator<E> iterator();

Object[] toArray();

boolean add(E e)

boolean remove(Object o);

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c);

boolean addAll(int index, Collection<? extends E> c);

boolean removeAll(Collection<?> c);

boolean retainAll(Collection<?> c);

void clear();

E get(int index);

E set(int index, E element);

void add(int index, E element);

E remove(int index);

int indexOf(Object o);

int lastIndexOf(Object o);

 

2.Set 是不含重复元素的、无序的 Collection

 

3.Map 是一种以 key 和 value 形成对应关系的容器, key 重复会覆盖 value

 

2.2.2 Java collection  fail-fast 机制

在我们软件开发的过程中,当碰到问题了,我们第一步就是重现问题,然后进行 debug ,找出问题的原因,但往往有些 bug 隐藏的比较深,经过 n 次特定的操作的在特定的环境下才会重现,或者出错后,报错的 stack traces的没有指出错误的真正起点。 
所以我们设计一个 Fail Fast 的系统显得很重要了。 
很多人设计的系统,为了增强系统的健壮性,自动的将系统中出现的问题处理掉,并继续运行,但是在未来的某个时间引发奇怪的错误。 
而 fail fast 的系统的做法却是相反的,当有问题发生,立即出错,并将出错信息显示出来。这样 bug 就很容易被发现,而不会进入到最终的产品中。

java.util 包中的集合类都返回 fail-fast 迭代器,这意味着它们假设线程在集合内容中进行迭代时,集合不会更改它的内容。如果 fail-fast 迭代器检测到在迭代过程中进行了更改操作,那么它会抛出ConcurrentModificationException ,这是不可控异常。

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

 

public class TestFastFail {

   

    public static void main(String[] args) {

       List<String> list = new ArrayList<String>(20);

       for ( int i = 0; i < 20; i++) {

           list.add( "test" );

       }

      

        // 在迭代器迭代过程中,如果集合被修改被抛出 java.util.ConcurrentModificationException

       // 这就是 fast fail 的意义,早点发现程序的错误,并抛出异常

       Iterator<String> iterator = list.iterator();

       for ( int i = 0; iterator.hasNext(); i++) {

           String string = iterator.next();

           System. out .println(string);

           list.add( "" );

       }

    }

}

本文转载自:http://zuoqiang.iteye.com/blog/1554862

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
私信 提问
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0
System.getProperty("user.dir")

System.getProperty("user.dir"); 获得系统属性 getProperties public static Properties getProperties() 确定当前的系统属性。 首先,如果有安全管理器,则不带参数直接调用其 checkPrope...

小落i
2014/03/27
0
0
-1-0 Java 简介 java是什么 java简单介绍

Java是一门纯粹的面向对象的高级的平台无关的编程语言 官网介绍: 了解 Java 技术 https://www.java.com/zh_CN/about/ 推荐词条: https://zh.wikipedia.org/wiki/Java https://zh.wikipedia.o...

noteless
07/03
0
0
【转】115个Java面试题和答案——终极列表

本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Jav...

一只死笨死笨的猪
2014/09/30
0
0
Immutable Collections for Java 1.6 发布

Immutable Collections for Java 1.6 发布,此版本提升了系统性能;减少了哈希映射和集合的内存占用;允许在 foreach 循环中使用 Cursors。 Immutable Collections for Java (Java不变集合类...

oschina
2014/04/13
636
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
今天
44
5
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部