JAVA常用的数据结构Linked–List/HashMap/HashSet
1.LinkedList
1.1简介
Java的LinkedList是一种常用的数据容器。LinkedList 实现了List 接口,能对它进行列表操作。
LinkedList 实现了Deque 接口,即能将LinkedList当作双端队列使用。所以,许多算法题都可以用此来解决。
1.2初始化
运用多态的知识和构造方法
public static void testLinkedList(){
List<Integer>list= new LinkedList<>();
Queue<Integer>queue= new LinkedList<>();
Deque<Integer>deque= new LinkedList<>();
LinkedList<Integer>linkedList= new LinkedList<>();
}
1.3常用方法
public boolean add(E e),//链表末尾添加元素,返回是否成功;
public void add(int index, E element) //向指定位置插入元素;
public void addFirst(E e)//添加到第一个元素;
public void addLast(E e)//添加到最后一个元素;
public boolean offer(E e)//向链表末尾添加元素,返回是否成功;
public boolean offerFirst(E e)//头部插入元素,返回是否成功;
public boolean offerLast(E e)//尾部插入元素,返回是否成功;
public E get(int index)//返回指定位置的元素;
public E getFirst()//返回第一个元素;
public E getLast()//返回最后一个元素;
public E set(int index, E element)//设置指定位置的元素;
2.LinkedHashMap
2.1简介
HashMap所存储的元素是无序的,LinkedHashMap类是HashMap的子类,它可以依照插入的顺序来存储元素,LinkedHashMap的存储结构采用了双重链表,因此元素的增加、修改和删除效率都比较高。LinkedHashMap采用的hash算法和HashMap相同,但它扩展了Entry(结点,用于存储key和value)。
2.2初始化
/*三种常用的构造方法
LinkedHashMap()
LinkedHashMap(int initialCapacity)
LinkedHashMap(Map m)
*/
public static void testHashMap(){
Map<Integer,Integer>map1= new LinkedHashMap<>();
Map<Integer,Integer>map2= new LinkedHashMap<>(3);
Map<Integer,Integer>map3= new LinkedHashMap<>(map1);
}
2.3常用方法
遍历LinkedHashMap,与插入顺序相同,其余API与HashMap相同
public void put(Object Key, Object Value);//添加元素
public void clear();//清空Map
public V get(Object key);//根据键取值
public V remove(Object key);//根据键删除值
public boolean containsKey(Object key);//判断有无此元素
public boolean containsValue(Object value);//判断有无此元素
//遍历LinkedHashMap,与插入顺序相同
public void testIterator(){
LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap();
linkedHashMap.put("a", "a");
linkedHashMap.put("b", "b");
linkedHashMap.put("c", "c");
Iterator it = linkedHashMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
System.out.println("key:" + entry.getKey()
+ " value:" + entry.getValue());
}
}
3.LinkedHashSet
3.1简介
LinkedHashSet是Set集合的一个子类,具有set集合不重复的特点,遍历时与我们插入的顺序相同。LinkedHashSet的底层使用LinkedHashMap存储元素。LinkedHashSet是有序的,它是按照插入的顺序排序的。
3.2初始化
/*三种常用的构造方法
public LinkedHashSet(int initialCapacity)
public LinkedHashSet()
public LinkedHashSet(Collection<? extends E> c)
*/
public static void testLinkedHashSet(){
LinkedHashSet<Integer>set1= new LinkedHashSet<>();
LinkedHashSet<Integer>set2 =new LinkedHashSet(4);
LinkedHashSet<Integer>set4 =new LinkedHashSet(new HashSet<>());
}
3.3常用方法
遍历时保证有序,其余API与HashSet相同
public int size();//获取大小
public boolean isEmpty();//判断是否为空
public boolean contains(Object o);//是否包含此元素
public boolean add(E e);//添加元素
public boolean remove(Object o);//删除元素
public void clear();//清空集合
//遍历时保证有序
Iterator<Integer> it = set.iterator();
while (it.hasNext()){
Integer n = it.next();
System.out.println(n);
}