本期是Java进阶知识系列的第四讲,将分享Java常用的数据容器——凑集类。
凑集类也分很多类型,比如:List、Set、Map、Queue等,本节主讲的是List和他的常用实现类。
如果你正在学习Java,不妨收藏这篇文章,或者关注我,定期收成与Java有关的知识和项目信息!

个人非常喜好的一位插画师的作品
之前三讲的内容,可点击下方获取:
如何优雅的处理非常--Java进阶知识讲义系列(一)
包装器类装箱与拆箱的艺术——Java进阶知识讲义系列(二)
一文讲透Java字符串——Java进阶知识讲义系列(三)
接下来就让我们正式开始分享课程内容吧。
常用凑集类常用的凑集类有List、Set、Map和Queue,以及上述四类衍生的子类或接口。
List:有序,数据可重复的数据容器;Set:无序,且数据不可重复的容器;Map:以键值映射的形式存储数据的容器;Queue:以前辈先出的逻辑管理数据的容器。一、ArrayListArrayList是List接口最常利用的实现类。
示例代码:
import java.util.ArrayList;public class ListDemo { public static void main(String[] args) { // 初始化列表List ArrayList<String> langlist = new ArrayList<String>(); // 向列表里添加数据 langlist.add("java"); langlist.add("python"); langlist.add("go"); System.out.println("列表为:"+langlist); // 获取列表内数据 System.out.println("获取到第2个数据为:"+langlist.get(1)); // 变动数据 langlist.set(2, "golang"); System.out.println("更新后列表为:"+langlist); // 删除数据 String delLang = langlist.remove(2); System.out.println("删除的数据为:"+delLang); System.out.println("删除后列表为:"+langlist); // 获取数组长度 System.out.println("列表长度为:"+langlist.size()); }}
输出结果为:
列表为:[java, python, go]获取到第2个数据为:python更新后列表为:[java, python, golang]删除的数据为:golang删除后列表为:[java, python]列表长度为:2
泛型:
上例中ArrayList<String>中的<String> 便是泛型,用来约束和规范容器中整体数据类型;泛型通过接在凑集类后的<> 符号来定义,<>中便是规范的数据类型。二、LinkedListLinkedList比较ArrayList,可以高效地在队首和队尾追加数据。
示例代码:
import java.util.Iterator;import java.util.LinkedList;public class ListDemo { public static void main(String[] args) { // 初始化列表List LinkedList<String> langlist = new LinkedList<String>(); // 向列表里添加数据 langlist.add("java"); langlist.add("python"); System.out.println("列表为:"+langlist); // 在队首添加数据 langlist.addFirst("go"); System.out.println("队首添加完数据后的列表为:"+langlist); // 在队尾添加数据 langlist.addLast("php"); System.out.println("队尾添加完数据后的列表为:"+langlist); // 用for循环遍历列表内数据 System.out.print("for循环遍历列表内数据:"); for (String lang : langlist) { System.out.print(lang+", "); } System.out.println(); // 用forEach遍历列表内数据 System.out.print("forEach遍历列表内数据:"); langlist.forEach(lang->{System.out.print(lang+" + ");}); System.out.println(); // 用forEach遍历列表内数据 System.out.print("Iterator遍历列表内数据:"); Iterator<String> it = langlist.iterator(); while (it.hasNext()) { System.out.print(it.next()+" / "); } System.out.println(); }}
输出结果为:
列表为:[java, python]队首添加完数据后的列表为:[go, java, python]队尾添加完数据后的列表为:[go, java, python, php]for循环遍历列表内数据:go, java, python, php, forEach遍历列表内数据:go + java + python + php + Iterator遍历列表内数据:go / java / python / php /
解释:
LinkedList的常用方法和ArrayList的常用方法基本相同,ArrayList示例中的方法,LinkedList也均具备相同的方法;本例中展示了如何遍历列表中的数据,一共展示了for、forEach、Iterator三种办法,务必多考试测验和理解;forEach例中item->{do something}的形式,是利用了java新特性中的lambda表达式(匿名函数)。以上便是第四讲课程的全部内容。
每天积累一点点,学习Java就不会有包袱。
正在学习的小伙伴记得给老K一个赞哦,你的支持是我持续输出课程内容最大的动力!
个人非常喜好的一位插画师的作品
想理解Java根本部分的课程内容,可以查看以下链接:
全网最完全的免费java教程讲义系列(一)——java配置和安装
全网最完全的免费java教程讲义系列(二)——java数据和变量
全网最完全的免费java教程讲义系列(三)——java的运算符
全网最完全的免费java教程讲义系列(四)——java的流程掌握
全网最完全的免费java教程讲义系列(五)——java数组详解
结束语我是专注于开拓领域的 @老K玩代码 ,会持续生产关于如何学习编程措辞的优质内容。
如果你想学习Java编程,或者想精进你的Java编程能力,可以关注我。
如果你对开拓、编程有任何疑问或者有想理解的内容,而我暂时没有写到的,也欢迎随时来找我聊聊。