java_集合

1.集合

集合分为单列集合(collection)和双列集合(map).
在这里插入图片描述

单列就是每个位置只有一个值,双列则是每个位置都是一对键值对,类似于python的字典。
在这里插入图片描述

2.collection

其中,collection又可以分为List和Set两种。
在这里插入图片描述

ArrayList的底层数据结构是数组,但不同于数组,arraylist的长度是可变的。同时由于实现的底层数据结构是数组,arraylist因此也具有数组的一些缺点:在进行增删操作时需要大批量的移动元素,非常不方便。

同时与链表数据结构的Linkedlist相比,ArrayList可以通过索引访问元素,在遍历和查找时很方便。

在这里插入图片描述

LinkedList顾名思义就是通过链表这种底层数据结构实现的集合,因此具备链表的一些特性:查询慢,但增删快。
LinkedList是基于双链表实现的,可以往后遍历,也可以往前。
LinkedList有一些定义好的方法:addFirst/addLast , getFirst/getLast , removeFirst/removeLast.
在这里插入图片描述
在这里插入图片描述

如上两图,由于队列和栈都是重点操作首尾元素,所以LinkedList可以用来设计这两种场景。

set元素不重复,无索引,无序。
HashSet不保证插入去除顺序:

import java.util.HashSet;
import java.util.Set;

public class Main {
  public static void main(String[] args) {

    Set<String> s1 = new HashSet<>();

    // Add a few elements
    s1.add("HTML");
    s1.add("CSS");
    s1.add("XML");
    s1.add("XML"); // Duplicate

    // Create another set by copying s1
    Set<String> s2 = new HashSet<>(s1);
    // Add a few more elements 
    s2.add("Java"); 
    s2.add("SQL");
    s2.add(null); // one null is fine
    s2.add(null); // Duplicate

    System.out.println("s1: " + s1);
    System.out.println("s1.size(): " + s1.size());

    System.out.println("s2: " + s2);
    System.out.println("s2.size(): " + s2.size());
  }
}

在这里插入图片描述

但LinkedSet在插入时保证元素的顺序。

import java.util.LinkedHashSet;
import java.util.Set;

public class Main {
  public static void main(String[] args) {

    Set<String> s1 = new LinkedHashSet<>();
    s1.add("A");
    s1.add("B");
    s1.add("C");
    s1.add("D");
    System.out.println("LinkedHashSet: " + s1);


  }
}

在这里插入图片描述

3.map

HashMap

最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap

能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
Hashtable

与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
LinkedHashMap

保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

Map<String, String> map = new HashMap<String, String>();

插入元素
map.put("key1", "value1");

获取元素
map.get("key1")

移除元素
map.remove("key1");

清空map
map.clear();

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>