(1)List集合 (2)Queue集合 (3)Set集合
1.List集合(重中之重)
1.1 基本概念
java.util.List接口是Collection接口的子接口,该接口中元素有先后放入次序并允许重复
该接口的主要实现类:ArrayList类、LinkedList类、Stack类以及Vector类(笔试题)。
其中ArrayList类的底层是采用动态数组实现的,因此访问元素方便,增删元素不方便。
其中LinkedList类的底层是采用双向链表实现的,因此增删元素方便,访问元素不方便。
其中Stack类的底层是采用动态数组实现的,该类通常用于描述具有后进先出特征的数据结构,叫做栈(last in first out LIFO)。
其中Vector类的底层是采用动态数组实现的,与ArrayList类相比,属于线程安全的类,因此操作元素的效率比较低,因此推荐使用ArrayList类。
1.2 常用的方法(练熟、记住)
void add(int index, E element) - 用于将元素element插入到当前集合index位置。
boolean addAll(int index, Collection<? extends E> c)
- 用于将集合c中的所有元素插入到当前集合中index位置。
E get(int index) - 根据参数指定的下标获取对应的元素并返回。
E set(int index, E element) - 用于将下标index位置的元素替换为element。
- 返回被替换的元素值。
E remove(int index) - 用于删除当前集合中index位置的元素并返回。
List<E> subList(int fromIndex, int toIndex)
- 用于获取当前集合中从fromIndex(含)开始到toIndex(不含)之间的部分视图。
- 视图简单来说就是获取元素并返回,但没有申请独立内存空间去存储。
1.3 泛型机制
目前集合中之所以可以放入不同类型的元素,是因为集合将所有放入的元素都看做Object类型处理的,当从集合中获取元素时得到的也是Object类型,为了表达该元素真实的数据类型就需要强制类型转换,而该方式可能引发类型转换异常。
为了避免上述错误的发生,从jdk1.5开始提出泛型机制,也就是在集合名称的右侧使用<数据类型>的方式明确要求该集合可以存放的数据内容,若放入其他内容则编译报错。
如:
List<Integer> lt1 = new LinkedList<Integer>();
原理(尽量理解):
泛型机制的本质就是参数化类型,也就是在集合的定义中使用<E>作为形式参数负责占位,当创建集合的对象时<>中的数据类型作为实际参数来初始化形式参数E,此时集合内部的所有E就被替换为<>中的数据类型,从而实现了数据类型作为参数的传递。
由于实际参数的类型可以有多种选择,从而使得同一个集合可以支持广泛的数据类型,因此得名为"泛型机制"。
如:
//int i = 10; //E = Integer;
//int i = 20; //E = String;
public void show(int i){ public interface List<E>{
...; ...;
} }
show(10); List<Integer> lt1 = ...;
show(20); List<String> lt1 = ...;
2.Queue接口(重点)
2.1 基本概念
java.util.Queue接口是Collection接口的子接口,与List接口是平级关系。
该接口主要用于描述具有先进先出特征的数据结构,叫做队列(first in first out FIFO).
该接口的主要实现类为:LinkedList类,该类在增删方法有很大的优势。
2.2 常见的方法
boolean offer(E e) - 用于将参数指定的元素e插入当前队列的末尾,成功返回true,
否则返回false。
E poll() - 用于获取并移除当前队列中的队首元素,若队列为空则返回null。
E peek() - 用于查看当前队列的队首元素,若队列为空则返回null。
3.Set集合(重点)
3.1 基本概念
java.util.Set接口是Collection接口的子接口,与List接口平级。
该接口中的元素没有放入次序,并且不允许重复。
该接口的主要实现类:HashSet类 和 TreeSet类。
其中HashSet类的底层是采用哈希表来实现数据内容的管理。
其中TreeSet类的底层是采用有序二叉树来实现数据内容的管理。
3.2 常用的方法
该接口的方法参考Collection接口的方法即可;
Iterator<E> iterator() - 用于获取当前集合中的迭代器,用于迭代/遍历/访问所有元素
其中Iterator是java.util包中的接口,常用方法如下:
boolean hasNext() - 用于判断当前迭代器是否拥有可以迭代/访问的元素。
E next() - 用于获取一个元素并指向下一个位置。
(1)List集合 (2)Queue集合 (3)Set集合的更多相关文章
- 特殊集合 Stack Queue Hashtable
//Stack 干草堆集合 栈集合 先进后出 Stack st = new Stack(); //实例化 初始化 st.Push(2); //添加元素 st.Push(6); s ...
- Stack集合、queue集合、hashtable集合
1.栈:Stack,先进后出,一个一个赋值,一个一个取值,按顺序. .count 取集合内元素的个数 .push() 将元素一个一个推入集合中//stack集合存入 ...
- Java集合最全解析,学集合,看这篇就够用了!!!
在看集合类之前, 我们要先明白一下概念: 1.数据结构 (1):线性表 [1]:顺序存储结构(也叫顺序表) 一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同 ...
- c#---部分;把数组或者结构体存入集合里,然后再从集合中取出之后,输出;foreach既可以用到提取数组重点额数据,也可以提取集合中的数据(前提是集合中的元素是相同数据类型)
1.输入班级人数,统计每个人的姓名,性别,年龄:集合与数组 //Console.Write("请输入班级人数:"); //int a = int.Parse(Console.Rea ...
- Java基础知识强化之集合框架笔记62:Map集合之HashMap嵌套HashMap
1. HashMap嵌套HashMap 传智播客 jc 基础班 陈玉楼 20 高跃 ...
- Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
1. Map集合的功能概述 (1)添加功能 V put(K key,V value):添加元素.这个其实还有另一个功能?先不告诉你,等会讲 如果键是第一次存储,就直接存储元素,返回null 如果键不是 ...
- Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)
1. 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 要求:不能创建新的集合,就在以前的集合上做. 2. 代码示例之 去除集合中重复元素,不创建新的集合: package ...
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...
- Java基础知识强化之集合框架笔记14:List集合存储字符串并遍历
1. List集合存储学生对象并遍历: 需求:存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)添加字符串对象到集合中 (4)遍历集合 2. 代码示例: package cn. ...
- Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历
1. Collection集合存储字符串并遍历 分析: (1)创建集合对象 (2)创建字符串对象 (3)把字符串对象添加到集合中 (4)遍历集合 2. 代码示例: package cn.itcast ...
随机推荐
- Rails中实现批量删除
在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action.批量删除的效果图如下:
- CentOS7.2配置Hadoop2.6.5
Hadoop配置文件 /etc/profile 配置Java和Hadoop环境 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export CLAS ...
- [codeup] 1126 看电视
题目描述 暑假到了,小明终于可以开心的看电视了.但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目. 现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗? 输入 输入包含多组测试数据.每 ...
- PHP 集成开发环境比较
专注了这么些年技术,没有养成记录和积累的习惯.如今乐于开源和分享经验,却停笔踌躇,不知该从何处说起.开通博客也有一段时间了,也没能写出一篇像样的文章,其实这篇文章也是被我拉壮丁似的用来练手的.思前想后 ...
- sql中把时间转换成xx年xx月xx日
DECLARE @dt datetime SET @dt=GETDATE()--1.短日期格式:yyyy-m-d SELECT STUFF(STUFF(CONVERT(char(8),@dt,112) ...
- JDK安装与环境变量全过程-鹏鹏
首先先讲下JDK的含义以及用处: JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Jav ...
- 软件架构系列二:Clean架构
外圈的层次可以依赖内层,反之不可以:内圈核心的实体代表业务,不可以依赖其所处的技术环境. 这是著名软件大师Bob大叔提出的一种架构,也是当前各种语言开发架构.干净架构提出了一种单向依赖关系,从而在逻辑 ...
- MQ与Webservice的区别
Webservice 和MQ(MessageQueue)都是解决跨平台通信的常用手段,两者有哪些区别呢? 个人认为最本质的区别在于 Webservice近乎实时通信,而MQ却通常是延时通信. 什么意思 ...
- nodejs做的一个测试端口程序
最近在学习nodejs的http,然后做了一个测试域名有没有使用那些端口,原意是用来做一个本地的静态服务器,然后运行前先测试端口,首先要用到的是net模块,主要用到的是Socket,判断其连接状态即可 ...
- vue2.0 element-ui中input的@keyup.native.enter='onQuery'回车查询刷新整个表单的解决办法
项目中用的element-ui是v1.4.3版本 实现的功能是在input中输入查询的名称,按下键盘回车键,可以查询表格中数据 问题是,我输入名称,按下回车,会整个表单刷新,搜索条件也被清空:代码如下 ...