java集合框架复习(一)
数组类Array是java中最基本的一个存储结构,它用于存储
一组连续的对象或一组类型相同的基本类型的数据。
Array特点:效率高,但容量固定且无法动态改变,
缺点:无法判断其中存有多少元素,length只是告诉我们Array的容量.
Arrays类: 专门用来操作Array,提供搜索,排序,复制等
静态方法.
Arrays中equals():比较两个Array是否相等,Array拥有相同元素个数,且所有对应元素两两相等.
fill():将值填入Array中.
sort():用来对Array进行排序.
binarySearch():在排好序的Array中寻找元素.
System.arraycopy():Array的复制.
Vector:基于Array的List,性能也就不可能超越Array,并且Vector
是“sychronizend”的,这个也是Vector和ArrayList的唯一区别.
ArrayList:同Vector一样是一个基于Array的,但不同的是ArrayList
不是同步的.所以在性能上要比Vector优越一些,但是运行到多线程环境
中时,需要自己管理线程的同步问题.从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度特快.
LinkedList:LinkedList不同于前面两种List,它不是基于Array的.
因为是基于链表实现的,data,(节点本身数据)nextNode(下一个节点)
所以更适用于 插入,删除操作.
【注意所有的List可以有null元素,元素可以重复】
移除List重复元素:
方法一:通过HashSet剔除 (本人喜欢使用的方式:使用的是hash数组不能产生重复数据的特性,来转换LIST)
}
HashSet:set同list一样都实现了Collection接口,但是他们的实现方式却大不一样. 【list是以Array为基础的,而Set则是HashMap的基础上实现的】
HashSet的存储方式是把HashMap中的Key作为Set的 对应存储项,这也是为什么在Set中不能像在List中一样有重复的项的根本原因,因为HashMap的key是不能有重复的。HashSet能快速定位 一个元素,但是放到HashSet中的对象需要实现hashCode()方法0。
TreeSet:Treeset将放入其中的元素按序存放,这就要求你放入其中的
对象时可排序的,这就用到了集合框架提供的另外两个实用类
Comparable和Comparator。
【一个类是可排序的,它就应该实现Comparable接口.】
【有时多个类具有相同的排序算法,那就不需要重复定义相同的排序算法,只要实现Comparator接口即可】
TreeSet是SortedSet的子类,它不同于HashSet的根本就是TreeSet
是有序的,它是通过SortedMap来实现的.
HashMap:也用到了哈希码的算法,以便快速查找一个键,
TreemMap对键按序存放,因此它有一些扩展的方法,比如firstkey(),lastkey()等. 当多个线程访问treemap时,要自己为之提供外同步.
HashTable:不允许空键或值.Hashtable的方法是Synchronize的,
在多个线程访问Hashtable时,不需要自己为它的方法实现同步.
【Map有两种比较常用的实现:HashTable.HashMap和TreeMap.】
java集合框架复习(一)的更多相关文章
- java集合框架复习
数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,len ...
- java集合框架复习----(3)Set
文章目录 四.set集合 1.hashSet[重点] 2.TreeSet 四.set集合 无序.无下标.元素不可重复 1.hashSet[重点] == 数组+链表+红黑树== 基于hashcode计算 ...
- java集合框架复习----(1)
文章目录 1 .集合框架思维导图 一.什么是集合 二.collection接口 1 .集合框架思维导图 一.什么是集合 存放在java.util.*.是一个存放对象的容器. 存放的是对象的引用,不是对 ...
- java集合框架复习----(4)Map、List、set
文章目录 五.Map集合[重要] 1.hashMap 六.Collections工具类 总结 集合的概念 List集合 set集合: Map集合 Collection 五.Map集合[重要] 特点: ...
- java集合框架复习----(2)List
文章目录 三.List集合 listIterator:迭代器 List实现类 1.泛型类 2.泛型接口 三.List集合 特点 有序,打印输出的顺序和添加时的顺序一致(不会帮你自动排序) 有下标,可以 ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
随机推荐
- Photoshop:建议设置
一.新建文档设置: 二.对齐设置 菜单->视图->对齐->全部 使用图层.形状等操作时自动对齐网格,画矢量图不怕模糊边缘,确保每个像素保持清晰. 三.首选项设置 关掉"启用 ...
- phpcms V9首页 频道页 列表页 推荐位 简单获取文章浏览量和评论统计
phpcms V9首页 频道页 列表页 推荐位 简单获取文章浏览量和评论统计 列表取得数据方法: {pc:content action="lists" catid="$c ...
- EJB--事务管理 .
在我们对事务的基本概念以及出现的问题和隔离级别有进一步的了解之后,接下来看看EJB是如何进行事务管理. 在EJB中有两种使用事务的方式.第一种方式通过容器管理的事务,叫CMT(Container-Ma ...
- Android开发之定义app在手机的安装位置
定义app在手机的安装位置,可以通过在清单文件中添加属性 android:installLocation="" 该属性有三个值:auto(自动),preferExternal(外部 ...
- Ubuntu中Eclipse安装与配置
安装Eclipse: 第一种是通过Ubuntu自带的程序安装功能安装Eclipse,应用程序 ->Ubtuntu软件中心,搜Eclipse安装即可.第二种方法是用命令:应用程序->附件-& ...
- Jenkins iOS – Git, xcodebuild, TestFlight
Introduction with Jenkins iOS If you are new to continuous integration for mobile platforms then you ...
- 如何使用UIAutomation进行iOS 自动化测试(Part I)
转自:http://www.cnblogs.com/vowei/archive/2012/08/10/2631949.html 写在前面 研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不 ...
- 函数buf_LRU_old_adjust_len
调整LUR_old位置,放到八分之五位置,是新的,后八分之三是旧的 512个页全变成新的,然后从后往前数,数到8分之3,设置为旧的 /********************************* ...
- 基于XMPP的即时通信系统的建立(六)— 开发环境搭建
服务器端 新建空工程 使用Eclipse新建名为openfire的空java工程. 导入源代码 这里使用的是openfire的openfire_src_3_10_3.zip源码. 导入后将目录src/ ...
- bzoj2797
对和排序,显然最小是a1+a2,次小a1+a3 然后穷举哪里是a2+a3 这样a1,a2,a3就求出来了 注意a2+a3只可能是前n+1项中的一个,所以穷举这步是O(n)的 接下来我们把已经确定的数的 ...