相信大多数的程序员都知道,Dictionary、Vertor、Stack和Properties这些类被用来存储和操作对象组。但是他们缺少一个核心的主题的。

集合框架设计成要满足以下的几个目标

第一条:该框架必须是高性能的,基本集合(动态的数组,链表,树,哈希表)的实现也必须是高效的。

第二条:该框架允许不同的类型的集合,以及类似的方式工作,具有的高度的互操作性。

第三条:对一个集合的扩展性和适应性来说必须是能够简单实现的。

因此,整个的集合就是围绕着一组标准的接口类来实现的。当然,你可以直接使用这些接口的标准来实现。比如:LinkedList、HashSet、和TreeSet等。除此之外,你也可以通过这些接口来进行实现自己的集合。

接口的定义:是代表集合的抽象数据类型,例如:Collection、List、Set、Map等。之所以定义多个接口,主要是为了以不同的方式来操作集合对象。

实现(类)的定义:是集合接口的具体实现。从本质上讲,他们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法的定义:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,主要是因为相同的方法是,可以在相似的接口上有着不同的实现方法。

除了集合,该框架也定义了几个接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们都被完全整合在了集合当中。

Java 集合框架提供了一套性能优良,使用方便的API接口和实现类,java集合的框架位于java.util包中, 所以当使用集合框架的时候第一步是需要先进行导包的。

接下来讲解一下Set和List的关系

1. Set 集合主要存储的是无序的,不重复的数据。List 集合接口存储的是有序的,可以重复的元素;

2. Set检索效率比较低下,删除和插入效率较高,插入和删除是不会引起元素位置的改变的 <它的实现类有HashSet,TreeSet>;

3. List集合和数组类型是非常类似的,都是可以进行动态增长,根据实际存储的数据的长度自动增长List集合空间的长度。它查找元素的效率是很高的,插入和删除的效率比较低,主要是因为会引起其他元素位置的改变 <他的实现类主要有ArrayList,LinkedList,Vector> 。

迭代器(又称为循环遍历功能)

通常情况下,就是你想要遍历出来一个集合中的元素。例如,显示集合中的每个元素值。

相信大多数学过编程的人都知道,一般遍历数组都是采用for循环或者增强for循环的方式,这两个方法是同样可以用在集合框架中的。当然还有一种方法,就是是采用迭代器遍历集合框架。它是一个对象,实现了Iterator 接口或ListIterator接口。

迭代器就是使你能够通过循环的方式来得到或删除集合的元素的。ListIterator 继承了Iterator,以允许双向遍历列表和修改元素的。

遍历ArrayList集合怎么实现呢?

import java.util.*;

public class TestMain{

public static void main(String[] args) {

List li=new ArrayList<String>();

li.add("Hello");

li.add("World");

li.add("hahahhah");

//第一种遍历方式使用 增强for来进行遍历 List

for (String str : li) {

System.out.println(str);

}

//第二种遍历方式使用的是 把链表变为数组相关的内容进行遍历

String[] strArray=new String[list.size()];

li.toArray(strArray);

for(int i=0;i<strArray.length;i++)

{

System.out.println(strArray[i]);

}

//第三种遍历 使用迭代器进行相关遍历

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

while(ite.hasNext())//判断下一个元素之后有值

{

System.out.println(ite.next());

}

}

}

解析一下:

以上的三种方法都是用来遍历ArrayList集合元素,第三种方法是采用迭代器的方法,该方法可以不用担心在遍历的过程中会超出集合的长度。

——————————————————————

作者:苦逼的程序员

来源:大鱼号

Java集合框架,你了解多少?相信你看了这篇汇总一目了然!的更多相关文章

  1. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  2. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  3. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

  4. Java 集合框架

    Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...

  5. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  6. 22章、Java集合框架习题

    1.描述Java集合框架.列出接口.便利抽象类和具体类. Java集合框架支持2种容器:(1) 集合(Collection),存储元素集合 (2)图(Map),存储键值对.

  7. Java集合框架实现自定义排序

    Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...

  8. (转)Java集合框架:HashMap

    来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...

  9. Java集合框架

    集合框架体系如图所示 Java 集合框架提供了一套性能优良,使用方便的接口和类,java集合框架位于java.util包中, 所以当使用集合框架的时候需要进行导包. Map接口的常用方法 Map接口提 ...

随机推荐

  1. Hello, OpenWrite

    目录 Markdown For Typora Overview Block Elements Paragraph and line breaks Headers Blockquotes Lists T ...

  2. Python 之父的解析器系列之六:给 PEG 语法添加动作

    原题 | Adding Actions to a PEG Grammar 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公 ...

  3. [币严区块链]BitcoinCash - BCH钱包地址生成与扫块充值监控(JAVA版)

    本文的方案无需自建节点,因为BCH当前区块数据大小已经达到200G以上,BTC区块数据也已超过300G,若每个币都自建节点,对云服务器的消耗会非常大. 认识BitcoinCash(BCH) Bitco ...

  4. 深入解析 Kubebuilder:让编写 CRD 变得更简单

    作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...

  5. [LeetCode]sum合集

    LeetCode很喜欢sum,里面sum题一堆. 1.Two Sum Given an array of integers, return indices of the two numbers suc ...

  6. 200行代码实现Mini ASP.NET Core

    前言 在学习ASP.NET Core源码过程中,偶然看见蒋金楠老师的ASP.NET Core框架揭秘,不到200行代码实现了ASP.NET Core Mini框架,针对框架本质进行了讲解,受益匪浅,本 ...

  7. Python 编译器与解释器

    Python 编译器与解释器 Python的环境我们已经搭建好了,可以开始学习基础知识了.但是,在此之前,还要先说说编译器与解释器相关的内容. 如果这部分内容,让你觉得难以理解或不能完全明白,可以暂时 ...

  8. C# 反射Reflection——反射反射程序员的快乐

    一.什么是反射 反射Reflection:System.Reflection,是.Net Framework提供的一个帮助类库,可以读取并使用metadata. 反射是无处不在的,MVC-Asp.Ne ...

  9. JVM 调优 - jmap

    Java命令学习系列(三)——Jmap 2015-05-16 分类:Java 阅读(17065) 评论(9) 阿里大牛珍藏架构资料,点击链接免费获取 Jmap jmap是JDK自带的工具软件,主要用于 ...

  10. Maven 梳理-安装配置

    项目构建过程包括[清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目]这几个步骤,这六个步骤就是一个项目的完整构建过程. 下载后解压   配置环境变量 F:\jtDev ...