一、集合类概述

java.util 包中提供了一些集合类,这些集合类又被称为容器。集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用,常用的集合有 List 集合、Set 集合和 Map 集合,其中 List 与 Set 继承了  Collection 接口,各接口还提供了不同的实现类。集合类的继承关系 :

二、Collection 接口

Collection 接口时层次结构中的根接口。构成 Collection 的单位称为元素。 Collection 接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。由于 List 接口与 Set 接口都继承了 Collection 接口,因此这些方法对 List 集合与 Set 集合是通用的。

表 2.1 Collection 接口的常用方法
方法 功能描述
add( E  e )  将指定的对象添加到该集合中
remove( Object o ) 将指定的对象从该集合中移除
isEmpty()  返回 boolean 值,用于判断当前集合是否为空
iterator()  返回在此 Collection 的元素上进行迭代的迭代器。用于遍集合中的对象
size()  返回 int 型值,获取该集合中元素的个数

通常遍历集合,都是通过迭代器(Iterator)来实现的。 Collection 接口中的 iterator() 方法可返回在此 Collection 进行迭代的迭代器。

eg 2.1 在项目中创建类 Muster ,在主方法中实例化集合对象,并想集合中添加元素,最后将集合中的对象以 String 形式输出。

package com.CollectionDemo;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Muster {public static void main(String[] args) {Collection<String> list = new ArrayList<>();// 实例化集合对象list.add("a");// 向集合添加元素 alist.add("b");// 向集合添加元素 blist.add("c");// 向集合添加元素 cIterator<String> iterator = list.iterator();// 创建迭代器while (iterator.hasNext()) {String string = (String) iterator.next();// 判断是否还有下一个元素System.out.println(string);// 获取集合中元素}}
}

运行结果为  :

a
b
c

ps :Iterator 的 next() 方法返回的是 Object 。

三、 List 集合

List 集合包括 List 接口以及 List 接口的所有实现类。 List 集合中的元素允许重复,各元素的顺序就是对象插入的顺序。类似 Java 数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。

3.1 List 接口

List 接口继承了 Collection 接口,因此包含 Collection 中的所有方法,此外, List 接口还定义了一下两个方法 :

( 1 ) :get(int index) :获取指定索引位置的元素  。

( 2 ) :set(int index , Object obj) :将集合中指定索引位置的对象修改为指定的对象  。

3.2 List 接口的实现类

List 接口的常用实现类有 ArrayList 与 LinkedList 。

( 1 ) :ArrayList 类实现了可变的数组,允许保存所有元素,包括 null ,并可以根据索引位置对集合进行快速的随机访问;缺点是向指定的索引位置插入对象或删除对象的速度较慢 。

( 2 ) :LinkedList 类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入,删除对象时,使用 LinkedList 类实现 List 集合的效率较高;但对象随机访问集合中的独享,使用 LinkedList 类实现 List 集合的效率较低。

使用 List 集合时通常声明为 List 类型,可通常不同的实现类来实例化集合。

eg  3.2-1 分别通过 ArrayList 、 LinkedList 类实例化 List 集合。

List<E> list = new ArrayList<>();
List<E> list2 = new LinkedList<>();

E 可以是合法的 Java 数据类型。例如,如果集合中的元素为字符串类型,那么 E 可以修改为 String 。

eg 3.2-1 在项目中创建 Gather ,在主方法中创建集合对象,通过 Math 类的 random() 方法随机获取集合中的某个元素,然后移除数组中索引位置是 “ 2 ” 的元素,最后遍历数组。

package com.CollectionDemo;import java.util.ArrayList;
import java.util.List;public class Gather {public static void main(String[] args) {List<String> list = new ArrayList<>();// 创建集合对象list.add("a");list.add("b");list.add("c");int i = (int) (Math.random() * (list.size() - 1));// 获得 0 ~ 2 之间的随机数System.out.println("随机获取数组中的元素:" + list.get(i));list.remove(2);// 将指定索引位置的元素从集合中移除System.out.println("将索引是'2'的严肃从数组移除后,数组中的元素是:");for (int j = 0; j < list.size(); j++) {// 循环遍历集合System.out.println(list.get(j));}}
}

运行结果为 :

随机获取数组中的元素:b
将索引是'2'的严肃从数组移除后,数组中的元素是:
a
b

ps :与数组想用,集合的索引也是从 0 开始 。

Java核心(集合类1-概述、Collection 接口 、List 集合)相关推荐

  1. 9.1-全栈Java笔记: 容器泛型—认识Collection接口

    开发和学习中需要时刻和数据打交道,如果组织这些数据是我们编程中重要的内容. 我们一般通过"容器"来容纳和管理数据.   事实上,数组就是一种容器,可以在其中放置对象或基本类型数据. ...

  2. java集合框架的接口_Java集合框架之Collection接口详解

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  3. java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)

    集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...

  4. java接口源码_java collection接口源码

    package java.util; /* * 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合有序,JDK不提供本接口的实现 ...

  5. Java Collection接口详解

    Collection 接口是 List.Set 和 Queue 接口的父接口,通常情况下不被直接使用.Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作.定义的方法既 ...

  6. 1.2 Collection接口

    Collection接口详解 Collection 接口是 List.Set 和 Queue 接口的父接口,通常情况下不被直接使用.Collection 接口定义了一些通用的方法,通过这些方法可以实现 ...

  7. Java 常用集合类学习

    Java 常用集合类学习 1 Collection集合 1.1 Collection集合简介 1.2 Collection集合基本操作 1.3 Collection集合迭代 2 List集合 2.1 ...

  8. Java集合框架概述及Collection接口方法讲解

    Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容 ...

  9. Educoder第1关:学习-Java集合类之Collection接口之往集合中添加元素

    ##educoer 第1关:学习-Java集合类之Collection接口之往集合中添加元素 任务:接收给定的一行字符串,实现如下需求: 1.通过空格(一个)切割字符串: 2.创建任意一种类型的集合: ...

最新文章

  1. QIIME 2用户文档. 16纵向和成对样本比较q2-longitudinal(2019.7)
  2. K项目轶事之被客户通报批评
  3. [perl]Wide character in print报错
  4. 图像降噪算法——小波硬阈值滤波(下)
  5. Android Binder总结
  6. Laravel Facades的实现原理
  7. shell中单引号、双引号、反引号、反斜杠的使用
  8. php数组写杨辉三角java_用java实现杨辉三角的示例代码
  9. gitgithub拾遗(一)——git
  10. centos 6 下远程桌面工具
  11. 【学习笔记】成功解决:(字体问题)Package fontspec Error: The font “STXingkai“ cannot be found. \makecover
  12. Android 服务器消息推送技术
  13. 5类网线,超5类网线,6类网线,超6类网线的区别
  14. 二战计算机技术,2020二本二战西南交大电子信息(计算机技术)上岸
  15. 内外墙乳胶漆颜色怎么搭配,内外墙品牌涂料如何选购?
  16. windows 远程桌面无法连接的问题
  17. 计算机网络知识总结:ip地址、分类及什么样的ip主机地址可以分配给主机使用
  18. 短信验证码登录需求的坑点整理
  19. 集成铁电存储器MCU为物联网应用提供出色性能
  20. 【复习笔记】电分-第二章-电力系统各元件特性及数学模型

热门文章

  1. python中如何打出乘方_python 乘方
  2. hdu6041仙人掌图
  3. (01背包扩展) 算法提高 金明的预算方案
  4. html给页面添加艺术型边框,如何为2016word的页面设置艺术型页面边框
  5. 岩板铺地好吗_岩板铺大客厅路面好么 比800*800的地砖更美观大方又空气?
  6. android WIFI相关问题集合
  7. 惠勒延迟选择实验(转)
  8. Day.js —— 一个轻量型的日期时间库 moment 的完美代替品
  9. python掷骰子猜大小
  10. 关于微软虚拟机更新后密码问题