您的位置:首页 > 编程语言 > Java开发

【Java中级】(二)集合框架

2018-02-23 15:33 302 查看


2.1、ArraList1、自增长容器的容量"capacity"会随着对象的增加,自动增长只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题。 2、常用方法
关键字简介
add增加
contains判断是否存在
get获取指定位置的对象
indexOf获取对象所处的位置
remove删除
set替换
size获取大小
toArray转换为数组
addAll把另一个容器所有对象加进来
clear清空
3、遍历
关键字简介
for用for循环遍历
iterator迭代器遍历
for:用增强for循环遍历
2.2、HashMap1、HashMap的存储方式——键值对2、键不可以重复,值可以重复2.3、HashSet1、HashSet的元素,不能重复2、Set中的元素没有顺序3、遍历Set不提供get()方法来获取指定位置的元素所以便利需要用到迭代器,或者增强for循环4、HashMap和HashSet的关系通过观察HashSet的源代码可以发现HashSet本身并没有独立的实现,而是在里面封装了一个MapHashSet是作为Map的key而存在的而value是一个命名为PRESENT的static的Object对象,因为是一个类属性,所以只会有一个2.4、CollectionCollection是存放一个对象的,Map是存放键值对的



2.5、CollectionsCollections是一个类,容器的工具类,就如同Arrays是数组的工具类
关键字简介
reverse反转
shuffle混淆
sort排序
swap交换
rotate滚动
synchronizedList线程安全化
2.5、ArrayList和HashSet的区别1、是否有顺序ArrayList:有顺序HashSet:无顺序2、能否重复List中的数据可以重复Set中的数据不可以重复重复的判断标准时:首先看hashcode是否相同如果hashcode不同,则认为是不同的数据如果hashcode相同,在比较equals,如果equals相同,则是相同数据,否则是不同数据2.6、ArrayList和LinkedList的区别ArrayList 插入,删除数据慢LinkedList 插入,删除数据快ArrayList是顺序结构,所以定位很快LinkedList是链式结构,所以定位慢
2.7、HashMap和HashTable的区别HashMap和HashTable都实现了Map接口,都是键值对保存数据的方式区别1:HashMap可以存放nullHashTable不可以存放null区别2:HashMap不是线程安全类HashTable是线程安全类
2.8、hashcode原理1、hashcode概念都有一个对应的hashcode(散列值)比如字符串“gareen”对应的是1001 (实际上不是,这里是方便理解,假设的值)比如字符串“temoo”对应的是1004比如字符串“db”对应的是1008比如字符串“annie”对应的也是10082、保存数据准备一个数组,其长度是2000,并且设定特殊的hashcode算法,使得所有字符串对应的hashcode,都会落在0-1999之间要存放名字是"gareen"的英雄,就把该英雄和名称组成一个键值对,存放在数组的1001这个位置上要存放名字是"temoo"的英雄,就把该英雄存放在数组的1004这个位置上要存放名字是"db"的英雄,就把该英雄存放在数组的1008这个位置上要存放名字是"annie"的英雄,然而 "annie"的hashcode 1008对应的位置已经有db英雄了,那么就在这里创建一个链表,接在db英雄后面存放annie3、查找数据比如要查找gareen,首先计算"gareen"的hashcode是1001,根据1001这个下标,到数组中进行定位,(根据数组下标进行定位,是非常快速的) 发现1001这个位置就只有一个英雄,那么该英雄就是gareen.比如要查找annie,首先计算"annie"的hashcode是1008,根据1008这个下标,到数组中进行定位,发现1008这个位置有两个英雄,那么就对两个英雄的名字进行逐一比较(equals),因为此时需要比较的量就已经少很多了,很快也就可以找出目标英雄这就是使用hashmap进行查询,非常快原理。
这是一种用空间换时间的思维方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: