java学习总结——集合框架
集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
(以上内容摘自百度百科)
按照我的理解呢,可能有接触过java的都应该用过队列。刚开始学的时候是自己写一个自定义队列,使用时候在调用自己所写的队列中自己写的增删查改等等的功能。而集合框架呢则省去了这个麻烦~他是已经给我们定义好了的一套东东,里面包括着很多,好像比较常用的(或者说是我比较会使用的)有ArrayList,LinkedList,Vector,HashSet,TreeSet,HashMap。嗯。这个博客里面也就对这些进行下总结。
首先总结一下各种List。
package listTest; import java.util.ArrayList; import java.util.LinkedList; import java.util.Vector; public class ListTest { public static void main(String[] args) { System.out.println("ArrayList测试:"); arrayListTest(); System.out.println("\n"+"LinkedList测试"); linkedListTest(); System.out.println("\n"+"Vector测试"); vectorTest(); } /* * arraylist */ public static void arrayListTest() { // 实例化一个ArrayList对象 ArrayList<Object> arrayList = new ArrayList<Object>(); // 添加数据 arrayList.add(3); arrayList.add(2); arrayList.add(1); arrayList.add("a"); arrayList.add("bcd"); arrayList.add(4); // 遍历输出 for (int i = 0; i < arrayList.size(); i++) { System.out.print(arrayList.get(i) + " "); } } /* * LinkedList */ public static void linkedListTest() { LinkedList<Object> linkedList = new LinkedList<Object>(); linkedList.add(3); linkedList.add(2); linkedList.add(1); linkedList.add("a"); linkedList.add("bcd"); linkedList.add(4); // 遍历输出 for (int i = 0; i < linkedList.size(); i++) { System.out.print(linkedList.get(i) + " "); } } /* * Vector */ public static void vectorTest(){ Vector<Object> vector = new Vector<Object>(); vector.add(3); vector.add(2); vector.add(1); vector.add("a"); vector.add("bcd"); vector.add(4); // 遍历输出 for (int i = 0; i < vector.size(); i++) { System.out.print(vector.get(i) + " "); } } }
单纯的通过代码来观察,可能会觉得这三个东西好像没有什么区别。因为他们都是创建一个对象,然后在向里面add内容,然后在遍历输出。可是他们的本质是不同的。ArrayList显而易见是通过数组来实现的。数组这个可能就更了解了。与之相比LinkedList则是通过链表来实现的。数组与链表不同主要是数组他的物理地址是连续的。而链表则不是,链表则是有一块儿负责存放下一个单位的地址的区域。所以在执行一些操作上,例如向队列中添加元素的时候,数组则是要找到所添加的位置,再把从这个位置到末尾的数据都给复制一遍。而链表实现这些就不需要,他只需把前一位置所指向的地址改一下就行了,就像把链条卸开,在中间填一个铁环一样。
至于Vector向量这个呢。他也是通过数组来实现的。与ArrayList的不同就在Vector是线程安全的~~
他们之间也有相似的地方,例如你遍历他们输出的顺序,都是与他们的添加顺序是一样的。他们也都是有序可以重复的。
接下来总结一下HashSet和TreeSet。
package listTest; import java.util.HashSet; import java.util.Iterator; import java.util.TreeSet; public class Set { public static void main(String[] args) { System.out.println("HashSet测试:"); hashSetTest(); System.out.println("\n" + "TreeSet测试:"); treeSetTest(); } /* * HashSet */ public static void hashSetTest() { HashSet<Object> hashSet = new HashSet<Object>(); hashSet.add(3); hashSet.add(2); hashSet.add(1); hashSet.add(3); hashSet.add("a"); hashSet.add("bcd"); hashSet.add(4); System.out.println(hashSet); // 构建一个迭代器 Iterator<Object> iterator = hashSet.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } } /* * TreeSet */ public static void treeSetTest() { TreeSet<Object> treeSet = new TreeSet<Object>(); treeSet.add(3); treeSet.add(2); treeSet.add(1); treeSet.add(3); // treeSet.add("a"); // treeSet.add("bcd"); treeSet.add(4); System.out.println(treeSet); // 构建一个迭代器 Iterator<Object> iterator = treeSet.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } } }
这个HashSet和TreeSet都是无序不可重复的。这里所说的无序指的是无论你的添加顺序如何,他最后通过迭代器输出的结果的顺序都是一样的。 如果添加进去同样的数据,则只会保留一个。
Set遍历输出的方法也不只限于使用迭代器。也可以直接通过System.out.println(set);来输出。
关于这几个集合框架,我平时使用的较多的就是ArrayList,可能也是水平有限所做的应用有限所以用不到那些比较高端的。可能对它们的理解也不是很透彻,有不足的地方还多望大神们指出!~谢谢~
相关推荐
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
2024嵌入式大厂面经50套大厂高频面试题资料
eclipaint-eclipse插件
该TemplateAppProject是一个基于XUI、XUtil、XAOP等框架构建的Android模版空壳工程,包含172个文件,涵盖68个Java源文件、64个XML配置文件、17个PNG图片文件、6个Gradle脚本文件、2个YAML配置文件、2个Git忽略文件、2个文本文件和1个Markdown文件。该工程集成了XPage、XUpdate和XHttp2等功能,旨在快速搭建Android应用开发环境。
IEA乌克兰的能源安全和即将到来的冬天-乌克兰及其合作伙伴的能源行动计划(英).pdf
UC-GUI文档uCGUI中文手册UC-GUI文档uCGUI中文手册
微信小程序反编译_ xapkg解包器
微信小程序婚礼邀请函_婚礼邀请函
该项目是一款基于Html和TypeScript构建的2B2C礼品购买平台源码,包含958个文件,涵盖196个TypeScript文件、145个Java文件、119个JPG图片、118个CSS文件、85个JavaScript文件、54个HTML文件、47个类文件、44个XML文件、26个PNG图片、23个Vue组件。该平台采用现代化前端技术,旨在提供一个流畅的礼品选购体验。
Fedora-Workstation-Live-x86_64-40-1.14.iso.008
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
Fedora-Workstation-Live-x86_64-40-1.14.iso.002
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
【作品名称】:基于Matlab的单水箱液位的模糊控制系统设计【含课程设计报告+程序】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 控制⽬标 控制⽬标:倒锥形容器的液位⾼度h=h0 检测装置:通过测量容器底部压⼒来间接测量液位 执⾏机构:控制进⽔电磁阀V1的开启度开启度 u ∈ [0, 90 ∘ ] 受控对象:模糊控制器最终影响倒锥形容器内的⽔量,所以受控对象是倒锥形容器 为简单起⻅,假设电磁阀V1的开启度与进⽔量间呈线性关系。所以控制进⽔量Qi实际上就是控制 电磁阀V1的开启度u。 因此对于整个系统⽽⾔,模糊控制器最终控制的是电磁阀V1的开启度u,从⽽控制倒锥形容器内 的⽔量。 注意:模糊控制器受控对象是倒锥形容器,其液位⾼度h和进⽔量Qi间的关系不是线性关系 电磁阀V2的开度固定,但出⽔量Qo与倒锥形容器的液位⾼ 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。
包含RMI服务所需的内容和测试使用的攻击FastJson1反序列化漏洞的Java文件
Wanandroid微信小程序w_x-Wanandroid
Fedora-Workstation-Live-x86_64-40-1.14.iso.005
全国大学生电子设计大赛项目合集全国电赛优秀作品STM32项目基于stm32和mpu9250的usbhid键盘,鼠标,游戏控制器
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
AutoLine是一个基于Python的通用自动化测试开源平台,包含了657个文件,涵盖228个PNG图片、209个CSS样式、95个JavaScript脚本、39个Python源代码、21个HTML文件、19个XML文件、14个GIF图片、6个DS_Store文件、5个文本文件、4个Markdown文件。该平台的设计源码由多种编程语言编写,旨在提供灵活高效的自动化测试解决方案。