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 ...
随机推荐
- D3.js部署node环境开发
总结一段D3.js部署node环境的安装过程 准备阶段: 首先电脑上要安装node环境,这个阶段过滤掉,如果node环境都不会装,那就别玩基于node环境搞的其他东西了. 搭建环境: 我在自己的F:系 ...
- android studio每次启动都要在fetching Android sdk compoment information停好久的解决方案
1)进入刚安装的Android Studio目录下的bin目录.找到idea.properties文件,用文本编辑器打开.2)在idea.properties文件末尾添加一行: disable.and ...
- JS 生成GUID 方法
var Guid={NewGuid: function () { var guid = (this._G() + this._G() +"-"+ this._G() +" ...
- Qt Visual Studio Add-in 导出的 .pri 怎么用?
今天咱们介绍一下 Qt Add-in 导出的 pri 文件怎么用. 一般需要导出这个文件, 主要应该是跨平台编译的需求, 所以这个文件里包含的东西会比较少, 咱们看下导出的文件是什么样子的: # ...
- HDU 1556 线段树或树状数组,插段求点
1.HDU 1556 Color the ball 区间更新,单点查询 2.题意:n个气球,每次给(a,b)区间的气球涂一次色,问最后每个气球各涂了几次. (1)树状数组 总结:树状数组是一个查 ...
- MYSQL的常用命令和增删改查语句和数据类型【转】
连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...
- JavaScript之数组方法整理
Array概述 除了Object类型,最常用的类型: 实质:有序的数据列表, 特性:可以动态的调整数组的大小 创建数组的两种方式 构造函数创建方式 var arr = ...
- apache 自带的ab测试
ab -c 20 -n 2000 http://192.168.1.110:8080/index.php
- ionic 踩过的坑-基本布局
目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...
- js 基础
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避 ...