集合概述

集合(Collections)是存储对象的容器。方便对多个对象的操作、存储对象,集合的作用就在这时显现了。

集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。

1. 集合和数组的异同点

相同点:

数组和集合类都是容器

不同点:

数组长度是固定的,集合长度是可变的

数组中可以存储基本数据类型,集合只能存储对象

数组中的元素与元素之间的内存地址是连续的,集合的元素的内存地址可以不连续

数组中存储数据类型是单一的,集合中可以存储任意类型的对象

**注意:**Object类型的数组可以存储任意类型的数组

2. 集合类的特点

用于存储对象,长度是可变的,可以存储不同类型的对象。

3. 集合架构

集合的用法十分简单,无外乎增删改查,不过需要注意的一点是:集合和数组中存放的对象都是对象的引用而不是对象本身。

接下来我们来看看集合的具体框架:

这些集合容器的底层都是由各种数据结构实现的。

4. 这么多种类的集合何时使用呢?

集合种类 使用情况
Collection 我们需要保存若干个对象的时候使用集合
List 如果我们需要保留存储顺序, 并且保留重复元素, 使用List;如果查询较多, 那么使用ArrayList;如果存取较多, 那么用LinkedList;如果需要线程安全, 那么使用Vector
Set 如果我们不需要保留存储顺序, 并且需要去掉重复元素, 使用Set;如果我们需要将元素排序, 那么使用TreeSet如果我们不需要排序, 使用HashSet, HashSet比TreeSet效率高;如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet

了解了这么多的基本知识之后,就一起进入集合的学习吧!

集合类(Collection)

Collection接口有两个子接口:

  • List(链表|线性表)
  • Set(集)

特点:

  • Collection中描述的是集合共有的功能(CRUD)
  • List可存放重复元素,元素存取是有序的
  • Set不可以存放重复元素,元素存取是无序的

1. Collection接口的共性方法

增加:
1:add() 将指定对象存储到容器中
add 方法的参数类型是Object 便于接收任意对象
2:addAll() 将指定集合中的元素添加到调用该方法的集合中
删除:
3:remove() 将指定的对象从集合中删除
4:removeAll() 将指定集合中的元素删除
修改
5:clear() 清空集合中的所有元素
判断
6:isEmpty() 判断集合是否为空
7:contains() 判断集合何中是否包含指定对象 8:containsAll() 判断集合中是否包含指定集合
使用equals()判断两个对象是否相等
获取: 9:int size() 返回集合容器的大小 转成数组10: toArray() 集合转换数组 迭代
11:toArray()
12:iterator()

我们来看一下具体操作:

Collection c = new ArrayList();
c.add("数据结构与算法");
c.add("深入理解计算机系统");
c.add("Linux核心技术");
System.out.println("添加成功吗?"+c.add("图解HTTP")); //创建集合
Collection c2 = new ArrayList();
c2.add("人性的弱点");
c2.add("追风筝的人");
c2.add("白夜行"); // 添加方法
c.addAll(c2); // 把c2的元素的添加到c集合 中去。
System.out.println("查看元素个数:"+c.size());
System.out.println("集合的元素:"+ c); // 判断方法
System.out.println("集合是否为空?" + c.isEmpty());
System.out.println("c中是否含有元素“深入理解计算机系统”?" + c.contains("深入理解计算机系统"));
System.out.println("c中是否含有c2中全部元素?" + c.containsAll(c2)); // 删除方法:
//c.clear(); //clear()清空集合中的元素
System.out.println("删除成功吗?"+c.remove("白夜行")); // remove 指定集合中的元素删除,删除成功返回true,删除失败返回false.
c.removeAll(c2); //删除c集合中与c2的交集元素。 System.out.println("查看元素个数:"+c.size());
System.out.println("集合的元素:"+ c); c.retainAll(c2); //保留c集合与c2的交集元素,其他的元素一并删除。 System.out.println("查看元素个数:"+c.size());
System.out.println("集合的元素:"+ c);

最终输出的结果如下:

添加成功吗?true
集合的元素:[数据结构与算法, 深入理解计算机系统, Linux核心技术, 图解HTTP, 人性的弱点, 追风筝的人, 白夜行]
删除成功吗?true
集合的元素:[数据结构与算法, 深入理解计算机系统, Linux核心技术, 图解HTTP]
查看元素个数:0
集合的元素:[]

接着我们来看一个比较重要的内容——迭代。

迭代是一个非常重要的概念,相当于数组中的遍历,但是二者还是有一些不同的地方的。

上面总览中介绍了,为了迭代集合中的元素,也就是将集合中的元素全部输出,我们可以进行两种操作。

一种是使用toArray(),另外一种就是iterator() 迭代器的方法。

下面我们来看toArray()的做法。

Collection c = new ArrayList();
c.add("数据结构与算法");
c.add("深入理解计算机系统");
c.add("Linux核心技术"); //其中一种方法是将集合中的元素放入数组中,然后用集合的toString方法输出
Object arr[] = c.toArray();
System.out.println("转成数组中的元素:" + Arrays.toString(arr)); //另外一种方法是遍历数组进行输出,不做概述

下面我们来看用迭代器操作的方法:

迭代器的作用:就是用于抓取集合中的元素。

迭代器的方法:
hasNext() 问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false next() 获取元素 remove() 移除迭代器最后一次返回 的元素。 NoSuchElementException 没有元素的异常。
出现的原因: 没有元素可以被迭代了

使用方法如下:

Iterator it = c.iterator();
while(it.hasNext()) { //hashNext()判断是否有元素可供遍历
System.out.println("集合中的元素:" + it.next());
} //清空迭代器中的元素
while(it.hasNext()) {
it.next();
it.remove();
} System.out.println(c);

输出的结果如下:

集合中的元素:数据结构与算法
集合中的元素:深入理解计算机系统
集合中的元素:Linux核心技术
[数据结构与算法, 深入理解计算机系统, Linux核心技术]

可见,it.remove删除的仅仅是迭代器中的元素,而不是真正集合中的元素。

以上,就是集合第一节的全部内容。

Java集合(一)——Collection的更多相关文章

  1. Java集合框架Collection

    转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...

  2. java集合 之 Collection和Iterator接口

    Collection是List,Queue和Set接口的父接口,该接口里定义的方法即可用于操作Set集合,也可以用于List和Queue集合.Collection接口里定义了如下操作元素的方法. bo ...

  3. Java集合之Collection接口

    java的集合分为三大接口,分别是Collection,Map,Iterator,集合接口和类在java.util包中,此次主要介绍三大接口之一的Collection接口. 一些Collection允 ...

  4. Java集合之Collection

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.* Java集合主要可以划分为4个部分:List列表.Set集 ...

  5. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  6. Java集合(Collection)综述

    1.集合简介 数学定义:一般地,我们把研究对象统称为元素.把一些元素组成的总体叫做集合. java集合定义:集合就是一个放数据的容器,准确的说是放数据对象引用的容器. java中通用集合类存放于jav ...

  7. Java集合之Collection与之子类回顾

    Java学习这么久,打算这几天回顾下java的基本知识点,首先是集合. 一.常用集合类关系图 Collection |___List 有序,可重复 |___ArrayList  底层数据结构是数组,增 ...

  8. java集合框架collection(6)继承结构图

    根据<java编程思想>里面的说法,java集合又叫容器,按照单槽和双槽分为两类,Collection和Map,这两个都是接口. 一.Collection Collection下面又分了三 ...

  9. 《Java基础知识》Java集合(Collection)

    作为一个Developer,Java集合类是我们在工作中运用最多的.最频繁的类.相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求: Java集合就像一个容器,可以存储任何类型的数 ...

  10. JAVA集合框架 - Collection

    collection大致介绍 Collection是集合层次结构中的根接口. 集合表示一组对象.有些集合允许重复元素,有些则不允许.有些是有序的,有些是无序的. JDK没有提供此接口的任何直接实现:它 ...

随机推荐

  1. MQTT 协议学习:Retained(保留消息) 与 LWT(最后遗嘱)

    背景导入 让我们来看一下这个场景: 你有一个温度传感器,它每三个小时向一个 Topic 发布当前的温度.那么问题来了,有一个新的订阅者在它刚刚发布了当前温度之后订阅了这个主题,那么这个订阅端什么时候能 ...

  2. C++编程学习(七) 循环结构

    1.continue:循环体中结束本次循环,直接进入下一次循环. 2.break:循环直接结束. 3.在for语句循环体中执行continue语句,程序会转到“表达式3”继续运行. 4.使用多重循环的 ...

  3. SpringBoot#Download

    _amaze! 如果不使用fastdfs等分布式的文件存储,有时候还是需要上传文件到web应用所在的服务器的磁盘上,下载文件.下面是一个小demo,关于如何用控制器进行上传和下载. - @PostMa ...

  4. [洛谷Luogu]P1803 线段覆盖问题

    贪心想法题解的各位dalaodalaodalao都讲得很清楚了,在下就提供一种桶排的做法吧. 因为给出数据范围 0≤ai<bi≤10000000≤ai<bi≤10000000≤ai< ...

  5. [转载]Jquery Chosen 插件动态生成option或重新绑定

    $(".chosen—select").find("option[value='1']").attr("selected", "s ...

  6. JAVA的控制结构

    一.控制结构 1.控制结构概述 控制结构是控制程序如何运行的特殊的语句结构.控制结构可以分为:顺序控制结构,分支控制结构和循环控制结构. 2.顺序控制结构 除了分支控制结构和循环控制结构之外的语句都是 ...

  7. Python MySQL 教程

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  8. spring学习第8天(advisor)

    1.关于之前的一个错误:aop的输出顺序,实际上官方文档上并没有说是否按照书写顺序输出的,有可能你1000次里面800次按顺序输出,200是随机输出的.<aop:aspect>有一个ord ...

  9. c++程序—while猜数字游戏

    #include<iostream> using namespace std; #include<string> #include<ctime> int main( ...

  10. MVC将Base64 保存为图片

    前台传来Base64字符串.本来可以直接保存数据库返回给图片 但是这样对数据库负担太重 传输也费时间.一搬都是存个地址在数据库 public ActionResult Injpg(string bas ...