Java学习手记1——集合
一.什么是集合
集合是对象的集合,就像数组是数的集合。集合是一种容器,可以存放对象(可以是不同类型的对象)。
二.集合的优点(为什么要用集合)
当然,在java里,可以使用数组来存放一组类型相同的对象。但是数组存放对象有两个缺点(集合优点):
- 数组大小是固定的:数组的一旦创建,大小则是固定的。在要存放的对象个数不可知或者超过数组容量的情况下,不适用。
- 数组存放的对象个数不可知:数组的内存放了多少个对象不可以得知。
三.集合的实现
java中集合主要由两个接口实现:Collection和Map,Collection又有两个子接口:Set和List。
Collection接口
|-------List接口
|-------ArrayList类(主要实现类,类似数组),LinkedList类(类似链表),Vector类(线程安全的,不过比较老,不常用)
|-------Set接口(下面的类实现了Collection接口,基本上没有添加新方法)
|-------HashSet(主要实现类,利用该类,需要重写equals()方法和hashCode()方法)
|-------LinkedHashSet(采用链表实现的hashset,遍历的时候按照添加的顺序)
|-------TreeSet(只能存放同类型,同时是有序的,此处的有序只按照添加对象的指定顺序。例如String按照字符串从小到大顺序,用的时候需要实现 java.lang.Comparable接口中的compareTo(Object o)方法,如果修改类不方便或者希望用一个通用的比较方法去比较多种对象,则可以创建一个实 现了Comparator接口的Comparator对象,并重写compare()方法,再在创建TreeSet接口的对象时构造器调用该对象)
Map接口
|-------HashMap,LinkedHashMap,TreeMap,Hashtable
各个接口的特点:
Set:元素无序,不可重复。SortedSet是一个按照升序排列元素的Set。
List:元素有序,可重复。提供了按照索引访问的方式。可以看作“动态数组”,
Map:具有映射关系“key-value”的键值对。一个键对应一个值,使用时根据键来寻找值,所以键不可重复,值可重复。
注:这里对无序、有序的理解:是指元素在内部实现的存储方式不同,有序例如:数组,指针。无序例如:哈希表。
下图为Collection接口继承树:
下面好像要分别来讲下List,Set,Map接口了,算了,另开一篇再讲吧~
Java学习手记1——集合的更多相关文章
- Java学习笔记之---集合
Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...
- Java学习笔记之集合
集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组而数组的长度固定 ...
- 【原】Java学习笔记026 - 集合
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:从三国演义中 ...
- Java学习日记-10 集合
集合(Collection) 1. 什么是集合? 集合是一组对象组成的一个整体,又称为容器,集合类属于java.util包.集合不同于数组的地方在于,一是它的容量是可变的,二是集合中只能存储对象,不能 ...
- java学习笔记之集合家族2
集合体系 一.数据结构 List集合储存数据结构 <1>堆栈结构 特点:先进后出 <2>队列结构 特点:先进先出 <3>数组结构 特点:查询快,增删慢 <4& ...
- Java学习:单列集合Collection
集合 学习集合的目标: 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型 ...
- 【Java学习笔记】集合转数组---toArray()
package p2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ...
- 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素
import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...
- Java学习日记-11 集合(1)
Collection接口集合中存储的只是对象的引用,不是对象本身. 1.ArrayList<E>类1.1ArrayList和Collection的关系 public interface L ...
随机推荐
- 【Cocos2d-x游戏开发】Cocos2d-x中的数据存储技术
一.引言 数据存储和网络功能可以说是一款游戏中必不可少的功能,如果一款游戏不能保存进度那么它的可玩性必然大打折扣(试想一下,玩家辛辛苦苦玩了一整天的游戏,结果退出时告诉人家不能保存关卡信息,你明天还得 ...
- Servlet和Struts2同时使用
在做WEB项目时,要么是Struts+Spring+Hibernate,要是就直接使用servlet.这次碰到一个项目,经理想要把之前一个用servlet做的部分模块移植到当前项目下(Struts+S ...
- CommonJS Promises/A规范
本文来自四火哥的翻译 CommonJS是一组javascript编程规范,而promise是其中之一. 简而言之,promises是一种令代码的异步行为变得更加优雅的软件抽象.在基本的定义中,代码可能 ...
- *HDU2510 DFS
符号三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 第十周 psp
团队项目PSP 一:表格 C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 8:45 10:55 40 35 90 分析与 ...
- opencv的问题
opencv中图像文件格式是BRG的顺序 而QImage是RGB形式 H:色彩 S:深浅 s=0 只有灰度 V:明暗
- Windows7 IE11 F12控制台DOC资源管理器报错的问题解决方法
------------------ Diagnostic: Exception in window.onload: Error: An error has ocurredJSPlugin.3005 ...
- 使用Java开发高性能网站需要关注的那些事儿
无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说, ...
- monkey命令
介绍: monkey是一个命令行工具,可以运行在Android模拟器里或真实设备中.它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入.触摸屏输入.手势输入等),可以对待测的 ...
- 修改SQL SERVER表,并添加说明
alter table dbo.user_PersonManagement add F_FGBM nvarchar(500)GO EXEC sys.sp_addextendedproperty @na ...