什么是集合?

集合就是由若干个确定的元素所构成的整体。例如,5只小兔构成的集合:

在数学中,我们经常遇到集合的概念。例如:

● 有限集合

○ 一个班所有的同学构成的集合;

○ 一个网站所有的商品构成的集合;

● 无限集合

○ 整数集合

○ 有理数集合

○ 实数集合

为什么要在计算机中引入集合呢?

这是为了方便处理一组类似数据,例如:

● 计算所有同学的总成绩和平均成绩;

● 列举所有的商品名称和价格;

在 Java 中,如果一个 Java 对象可以在内部持有若干其它 Java 对象,并对外提供访问接口,我们把这种 Java 对象称为 集合。

案例:

String[] names = new String[10]; //可以持有 10 个 String 对象
names[0] = "Hello"; //放入 String 对象
names[1] = "World";
String name = names[0]; //获取 String 对象

既然 Java 提供了数组来充当集合,那么,为什么我们还需要其它集合类?

这是因为数组有如下限制:

● 数组大小固定不变

● 数组只能按索引存取

因此,我们需要各种不同类型的集合类来处理不同的数据,例如:

● 可变大小的顺序链表

● 保证无重复元素的集合

Collection

Java 标准库自带的 java.util包提供了集合类:Collection,它是除 Map外所有其它集合类的根接口。

Java 的 java.util包主要提供了以下三种类型的集合:

● List:一种有序列表的集合;

● Set:一种保证没有重复元素的集合;

● Map:一种通过键值(key-value)查找的映射表集合;

Java 集合的设计有以下几个特点:

● 实现了接口和实现类相分离。比如,有序表的接口是 List,具体的实现类有 ArrayList,LinkList 等;

● 支持泛型,我们可以限制在一个集合中只能放入同一种数据类型的元素。比如:List<String> list = new ArrayList<>();//只能放入 String 类型

Java 访问集合总是通过统一的方式——迭代器(Iterator)来实现,它最明显的好处在于无需知道集合内部元素是按什么方式存储的。

由于Java的集合设计非常久远,中间经历过大规模改进,我们要注意到有一小部分集合类是遗留类,不应该继续使用:

● Hashtable:一种线程安全的Map实现;

● Vector:一种线程安全的List实现;

● Stack:基于Vector实现的LIFO的栈。

还有一小部分接口是遗留接口,也不应该继续使用:

● Enumeration:已被Iterator取代。

参考文章

Java 集合简介 一的更多相关文章

  1. java集合简介

    java集合主要包括以下几点 Java 集合概述 Collection 接口 Iterator 接口 Set List Map Collections 工具类 Enumeration 1.java集合 ...

  2. Java集合---简介

    概念 集合可以理解为一个动态的对象数组,不同的是集合中的对象内容可以任意扩充.Java最基本的集合接口:Collection接口 集合的特点 性能高 容易扩展和修改 Collection的常用子类 L ...

  3. Java 集合系列(一)

    Java集合系列文章将以思维导图为主要形式来展示知识点,让零碎的知识形成体系. 这篇文章主要介绍的是[Java 集合的基本知识],即Java 集合简介. 毕业出来一直使用 PHP 进行开发,对于大学所 ...

  4. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  5. [转载]Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  6. Java从零开始学二十(集合简介)

    一.为什么需要集合框架 数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象.或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题 二.集合框架主要接口 ...

  7. Java连载81-枚举类型,生成五个不重复的随机数,集合简介

    一.枚举类型 1.枚举类型的格式就是enum+枚举类型的名称,可见下面的例子. package com.bjpowernode.java_learning; ​ public class D81_1_ ...

  8. Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

    概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...

  9. Java集合源码分析(四)Vector<E>

    Vector<E>简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是 ...

随机推荐

  1. 青山不遮,毕竟东流,集成Web3.0身份钱包MetaMask以太坊一键登录(Tornado6+Vue.js3)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_213 上世纪九十年代,海湾战争的时候,一位美军军官担心他们的五角大楼会被敌人的一枚导弹干掉,从而导致在全球的美军基地处于瘫痪状态. ...

  2. 不安装运行时运行.NET程序

    好久没写文章了,有些同学问我公众号是不是废了?其实并没有.其实想写的东西很多很多,主要是最近公司比较忙,以及一些其他个人原因没有时间来更新文章.这几天抽空写了一点点东西,证明公众号还活着. 长久以来的 ...

  3. LuoguP1799 数列_NOI导刊2010提高 (动态规划)

    $ f[j]=max(f[i−1][j],f[i−1][j−1]+(x == j) $ #include <iostream> #include <cstdio> #inclu ...

  4. JavaSciprt 笔记目录

    JavaScript 基础知识(一):对象以及原型 JavaScript 基础知识(二):闭包 JavaScript 异步编程(一):认识异步编程 JavaScript 异步编程(二):Promise

  5. Canvas 线性图形(一):路径

    路径的概念 路径是从起始点到结束点之间的连线.个人认为,二维画布中分为线性图形和非线性图形,线性图形包括矩形.直线.曲线.圆形等各种几何图形:非线性图形包括图象.文本.像素.线性图形中又分为路径和非路 ...

  6. 056_末晨曦Vue技术_处理边界情况之X-template

    处理边界情况之X-template 点击打开视频讲解更加详细 另一个定义模板的方式是在一个<script>元素中,并为其带上 text/x-template 的类型,然后通过一个 id 将 ...

  7. Miller Rabbin 算法—费马定理+二次探测+随机数 (讲解+例题:FZU1649 Prime number or not)

    0.引入 那年,机房里来了个新教练, 口胡鼻祖lhy 第一节课,带我们体验了暴力的神奇, 第二节课,带我们体验了随机数的玄妙, -- 那节课,便是我第一次接触到Miller Rabbin算法, 直到现 ...

  8. java数组---数组的使用(打印,求和,最大值)

    public static void main(String[] args) { int[] arrays={1,2,3,4,5}; //打印该数组 for (int i = 0; i < ar ...

  9. MySQL5.7.35的安装

    Step①: 下载安装包,MySQL下载地址:百度 Step②: 解压至你的安装路径,我个人是在E盘存放.  Step③: 配置环境变量. ①:在系统属性中,点击环境变量. ②:找到环境变量-> ...

  10. 如何在 C# 程序中注入恶意 DLL?

    一:背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的? 其实简而言之就是线程的远程注入,这一篇就展开说一下. ...