List Set Map
数据结构:
数据存储的常用结构
栈 队列 数组 链表 红黑树
栈 : stack,又称堆栈,它是运算受限的线性表,
它的限制主要体现在仅允许在标的的一段进行插入和删除操作
不允许在其他任何位置进行添加.查找.删除等操作
它的存取有以下特点:
1.先进后出(存进去的元素,要在它的后面的元素依次取出后,才能取出该元素)
类似弹夹
2.栈的入口,出口都在栈的最顶端
有两个名词需要注意:
压栈:就是存元素,把元素存储到的栈的最顶端,栈中已有的元素依次向栈底方向移动一个位置
弹栈:就是取元素,把栈的最顶端位置元素取出,栈中已有的元素依次向栈顶方向移动一个位置
队列:
queue 简称队,它和堆栈是一样的,也是一种运算受限的线性表,
它的限制是仅允许在标的一段进行插入,而在标的的另一端进行删除
它的存取有以下特点:
1.先进先出(即,存进去的元素,要在它前面的元素依次取出后,才能取出该元素)
2.队列的入口和出口各占一端
数组:
Array:是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间中存储元素.
// 快递柜 和 宾馆中的房间
数组的存储有以下特点:
1.查找元素快
2.增删元素慢
2.1指定索引位置可以删除元素
2.2指定索引位置可以添加元素
链表.二叉树.红黑树
Set集合:
特点:
1.不允许存储重复的元素
2.最多包含一个 null
3.通常认为Set接口元素是无序的
Set接口的子类: Java.util.HashSet 和
Java.util.LinkedHashset
HashSet集合:
HashSet继承自Collection,有较多相同的方法
它存储的元素是不允许重复,
并且元素是无序的(存取顺序不一致)
HashSet的底层实现需要有Java.util.HashMap支持
它的元素是根据对象的哈希值来确定在集合中元素的存储位置,
因此存取和查找性能较好
保证元素唯一依赖于重写的hashCode 和 equals 方法,来保证元素唯一
在JDK 1.8 之前,哈希表底层采用数组+链表结构存储数据
在JDK 1.8 之后,哈希表底层采用数组+链表+红黑树实现,
当链表长度超过阈值(8),将链表转换成红黑树存储
链表结构可以保证元素是有序的
LinkedHashSet集合
有序,元素不重复
其他和 HashSet 集合一样
常说的链表结构:单向链表和双向链表
单向列表是无序的,双向列表是有序的
Map集合:
特点:
1. 将键映射到值的对象.
一个映射不能包含重复的键,每个键最多只能映射到一个值(V不能对多个K)
2. 提供三种Collection 视图
键集.值集,或键值映射关系集的形式查看某个映射的内容
3.
通过无参构造创建空映射?
禁止存储 null键和null值
TreeMap是有序的
HashMap是无序的
重点实现类
1.HashMap
2.TreeMap
3.LinkedHashMap
4.Attributes
是一个接口
Map<K,V> 两种泛型 映射:一一对应,不会出现一对多 人和身份证 主机名和IP地址
一个映射不能包含重复的键
package HashSetDemo;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
// 定义一个HashSetDemo
public class HashSetDemo {
/*
boolean add(E e) 添加元素
void clear()清空集合元素
Boolean contains(Object O) 是否包含指定的元素
Boolean isEmpty() 判断指定的集合是否为空
Boolean remove(Object o) 从集合中删除指定的元素
Iterator<E> iterator() 获取一个迭代器
int size() 获取集合中的元素个数
T[] toArray(T[] t) 转换成指定类型的数组
*/
public static void main(String[] args) {
// 创建一个Set集合
// 灰色代表可以省略
Set<String> set = new HashSet<String>();
// 添加元素
set.add("小明");
set.add("小王");
set.add("小刘");
set.add("小周");
set.add("小王");
// 从集合中取元素1,索引,2迭代器
// Set没有索引,只能用迭代器
Iterator<String> iterator = set.iterator();
// 判断是否有下一个元素
while (iterator.hasNext()) {
String temp = iterator.next();
System.out.println(" " + temp + " ");
/*
小刘 小周 小明 小王
输出结果 无序 且不重复
*/
}
}
}
本文介绍了计算机科学中的核心数据结构,包括栈、队列、数组、链表、红黑树等,并详细探讨了Set和Map集合的特点及应用。特别强调了不同数据结构在存储和检索方面的优劣。

659

被折叠的 条评论
为什么被折叠?



