四种常见的数据结构、LinkedList、Set集合、Collection、Map总结
四种常见的数据结构:
1.堆栈结构:
先进后出的特点。(就像弹夹一样,先进去的在后进去的低下。)
2.队列结构:
先进先出的特点。(就像安检一样,先进去的先出来)
3.数组结构:
查找元素快,但是增删元素慢
4.链表结构:
增删元素快,但是查找元素慢
linkedlist:(list接口下的一个子类,和arraylist是同级别关系)
1.底层是链表结构
2.它的一些特有方法:
addfirst(e e) : 向集合中的开头添加元素
addlast(e e):向集合的末尾添加元素
getfirst():得到集合中的第一个元素
getlast():得到集合中的最后一个元素
removefirst():删除集合中的第一个元素
removelast():删除集合中的最后一个元素
pop(e e) : 从集合的最上面弹出一个元素
push():向集合的最上面添加元素
isempty() : 判断集合中是否有为空
3.在开发时,linkedlist集合也可以作为堆栈,队列的结构使用。在开发时,linkedlist集合也可以作为堆栈,队列的结构使用。
使用的方法是:调用addfirst(e e) 方法和getfirst() 方法
set集合(set是一个接口,和list一样,它俩也是同级别关系)
set集合的遍历方式只有两种,1. 增强for 2. 迭代器
set集合特点:
唯一性,元素不重复
1.set的子类有:
hashset、linkedhashset
2.hashset:
a.hashset是无序的,存取顺序不一样
b.底层是哈希表结构,通常自定义对象是需要重写hashcode方法和equals方法
c.hashset是使用hashcode方法和equals方法来保证元素唯一的
d.判断原理是:
先判断hashcode方法
相同:
不添加
不相同:判断equals方法:
不相同:添加
相同:不添加
linkedhashset:
1.linkedhashset是有序的,存取顺序是一样的
2.底层是链表+哈希表结构。
3.通过链表来保证有序。通过哈希表来保证元素的唯一。
collection总结:
1.子类:
list、set(两个都是接口)
list子类:
arraylist
linkedlist
set子类:
hashset
linkedhashset
2.collection的方法:
boolean add(object e): 添加
void clear(): 清空
boolean remove(object o):删除
boolean contains(object o): 包含
boolean isempty():是否为空
iterator iterator():迭代器
int size(): 集合长度
object toarray(): 将集合存到数组中
3.迭代器:
两个方法:
hasnext():是否有下一个元素
next(): 获取下一个元素
4.list和set的区别:
list:
有序,且可有重复元素
set:
它是一个无序的集合(元素存与取的顺序可能不同)
不可以有重复的元素
5.list集合中的特有方法:(有角标的都是list集合中的)
void add(int index, object element) 将指定的元素,添加到该集合中的指定位置上
object get(int index) 返回集合中指定位置的元素。
object remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
object set(int index, object element) 用指定元素替换集合中指定位置的元素,返回值的更新前的元素
6.泛型:
好处:
提高了程序的安全性
将运行时期的异常提到的编译时期
避免了类型转换
map:(它也是一个接口,它是和collection同级别的,它是一个双列集合)
常用子类:
hashmap<key , value>:
泛型里存储键和值,键唯一,但是值可以重复。底层是哈希表结构,基本和hashset集合差不多,在存储自定义对象时,需要重写hashcode方法和equals方法。无序。
linkedhashmap:
底层是链表+哈希表结构。有序,存和取的顺序一致。
方法:
put(k,v):添加元素,相当于list集合中的add方法
get(key):得到key对应的值。
map遍历(两种方式)
1. keyset()方法
转为set对象,获取map集合中的键集,存储到set集合中
然后可使用增强for或迭代器来获取键和值都通过,键来获取值。
2. entryset()方法
方法:
getey()
getvalue()
转为entry对象,获取map集合中的键和值的映射关系,存储到entry对象中。
然后,可以使用增强for或迭代器来获取键和值。
都通过,键来获取值。
properties类(一般和流一块使用,它也是map下的一个子类它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、u盘、光盘)上。键值的来源也可以是持久化的设备。
(有和流技术相结合的方法。)
1.public object setproperty(string key, string value)调用 map 的方法 put。
2.public set<string> stringpropertynames()返回此属性列表中的键集, //keyset()方法
3.public string getproperty(string key)用指定的键在此属性列表中搜索属性//get()方法
写入文件的方法:
store(writer,”文件的描述信息”)
读取文件的方法:
load(reader)
可变参数:
表现格式为:
数据类型... 变量名
相当于一个数组。
collections工具类
方法
shuff()随机打乱方法
sort()排序方法,按照自然规律排序。