文档章节

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
Java 9 新特性 极简介绍

1. Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真...

程序员诗人
2017/09/16
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
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

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部