一、集合类概述

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. openwrt配置内核驱动_openwrt增加内核模块的方法
  2. 【Python刷题】_10
  3. LNMP_静态文件不记录日志,配置缓存
  4. matlab 角度转四元数_基于Matlab的机械臂路径规划
  5. YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】
  6. 大家都在说的分布式系统到底是什么
  7. mysql如何实现管理权限分离_基于SpringCloud+vue(ElementUI)+mySQL前后端分离设计之--搭建权限管理系统...
  8. 打开mysql的远程连接_开启mysql的远程访问权限
  9. 跨网页的新手引导_做自媒体的新手要注意什么,这些坑不能踩,这些事不能做...
  10. python getopt使用_如何使用getopt.getoptpython中的方法?
  11. vant实现三级联动
  12. Python-百度经纬度转高德经纬度
  13. Mac如何卸载系统自带软件?macbook系统软件怎么删除?
  14. vue 自定义事件 解绑
  15. English Learning - Day22 作业打卡 2022.12.28 周三
  16. Ubuntu16.04LTS上安装QQ,QQ音乐
  17. nginx学习--nginx下的gzip与vary、预压缩、缓存、反向代理的结合
  18. 树的直径/重心 学习笔记
  19. Python 操作XML文件一文通
  20. 依靠云计算推动企业业务模式变革

热门文章

  1. CPA十二--我国外币会计报表折算(转载)
  2. iOS开发中SDK是什么?
  3. 安装Kubernets管理平台Ratel
  4. 说起仙人掌,相信你一定不会觉得陌生
  5. 浅谈 “空指针、野指针、void*”
  6. 人工智能测试-人工智能质量工程技能简介
  7. GPT-3会是第一个通用人工智能吗?
  8. linux 1060显卡,Ubuntu 16.04 安装 NVIDIA GeForce GTX 1060 显卡驱动,以及 CUDA 10.1
  9. 我的产品经理书单(2017-2019)
  10. 51单片机入门学习------环境搭建