文章目录
java数据结构
Collection是java集合框架体系的总接口,其他集合框架都是实现Collection,封装了集合框架的公共操作
Collection的工具类Collections,它封装了所有集合的关于算法操作的具体实现静态方法
集合框架Collection的三种主要实现如下:List(列表),Set,Queue
集合框架的另外一种数据类型的总接口是Map,基于Key-Value进行存储数据的,其中Key键值是不可重复的,主要是通过类的hashCode()和equal()进行保证的
List
如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替List;
如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList;
如果在多线程条件下使用,可以考虑Vector;
如果需要频繁地删除插入,LinkedList就有了用武之地;
如果你什么都不知道,用ArrayList没错。
1.Vector类
用于事先不知道数组大小或数组大小可改变的情况
//创建向量v,初始大小为3,之后每次扩大两个步长
Vector v = new Vector(3,2);
//添加到向量尾部
v.addElement(new Integer(1));
//返回向量大小
v.size();
//返回向量容量
v.capacity();
//清空
v.clear();
//判断是否为空
v.isEmpty();
//移除
v.remove();
2.ArrayList
ArrayList 类是一个可以动态修改的数组
//创建ArrayList
ArrayList<String> sites = new ArrayList<String>();
//添加元素
sites.add("Google");
//访问元素
sites.get(0);
//修改元素
sites.set(0,"Runooob");
//删除元素
sites.remove(0);
//求元素数量
sites.size();
//遍历
for(String i : sites){
System.out.println(i);
}
Collections类中有排序方法
import java.util.Collections;
Collections.sort(sites); // 字母排序
3.LinkedList
可作为队列使用
//在列表开头添加元素
sites.addFirst("wiki");
//在列表结尾添加元素
sites.addLast("TaoBao");
//在列表开头移除元素
sites.removefirst();
//移除尾部元素
sites.removeLast();
//获取开头元素
sites.getFirst();
//获取尾部元素
sites.getLast();
4.Stack类
栈是Vector的一个子类
//创建一个栈
Stack<Integer> st = new Stack<Integer>();
//测试是否为空
st.empty();
//查看栈顶部对象,但不移除
st.peek();
//移除栈顶部对象
st.pop();
//压入堆栈顶部
st.push();
//返回对象在栈中位置
st.search();
Set
1.HashSet
不允许有重复元素的集合
允许有 null 值
是无序的,即不会记录插入的顺序
不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的
//判断元素是否存在于集合中
sites.contains(“Taobao”);
//删除集合中所有元素
sites.clear();
2.SortedSet
Map
1.HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射
根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步
HashMap 是无序的
//创建一个HashMap对象
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
//添加元素
Sites.put(1,"Google");
//访问元素
使用get(key)来获取对应的value
Sites.get(3);
//删除元素
Sites.remove(3);
//清空
Sites.clear();
//遍历
for(Integer i:Sites.keySet()){
System.out.println("key:"+i+"value:"+Sites.get(i));
}
for(String value:Sites.values()){
System.out.print(value + ", ");
}