Java LinkedList链表、HashSet、HashMap

一、Java LinkedList:

链表(LinkedList)是一种常见的基础数据结构,是一种线性表,在每一个节点里存储下一个节点的地址。链表分为单向链表和双向链表。单向链表包含两个值:当前节点的值和指向下一个节点的链接;双向链表有三个整数值:数值、向后的节点链接、向前的节点链接。

链表(LinkedList)的语法:

// 引入 LinkedList 类import java.util.LinkedList;

LinkedList<E> list = new LinkedList<E>(); // 普通创建方法或者LinkedList<E> list = new LinkedList(Collection<? extends E> c); //使用集合创建链表

1、创建链表:

// 引入 LinkedList 类

import java.util.LinkedList;

public class RunoobTest {

public static void main(String[] args) {

LinkedList<String> sites = new LinkedList<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Weibo");

System.out.println(sites);

}

}

2、添加元素:

// 引入 LinkedList 类

import java.util.LinkedList;

public class RunoobTest {

public static void main(String[] args) {

LinkedList<String> sites = new LinkedList<String>();

sites.add("Google");

sites.add("Taobao");

// 使用 addFirst() 在头部添加元素

sites.addFirst("Wiki"); //sites.addLast("Wiki");

System.out.println(sites);

}

}

3、移除元素:

/ 引入 LinkedList 类

import java.util.LinkedList;

public class RunoobTest {

public static void main(String[] args) {

LinkedList<String> sites = new LinkedList<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Weibo");

// 使用 removeFirst() 移除头部元素

sites.removeFirst(); //sites.removeLast();

System.out.println(sites);

}

}

4、获取元素:

// 引入 LinkedList 类

import java.util.LinkedList;

public class RunoobTest {

public static void main(String[] args) {

LinkedList<String> sites = new LinkedList<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Weibo");

// 使用 getFirst() 获取头部元素

System.out.println(sites.getFirst());// System.out.println(sites.getLast());

}

}

5、迭代元素:

// 引入 LinkedList 类

import java.util.LinkedList;

public class RunoobTest {

public static void main(String[] args) {

LinkedList<String> sites = new LinkedList<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Weibo");

for (int size = sites.size(), i = 0; i < size; i++) {

System.out.println(sites.get(i));

}

}

}

链表(LinkedList)的常用方法:

|----------------------------------------------------|-------------------------------------------------------|
| 方法 | 描述 |
| public boolean add(E e) | 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
| public void add(int index, E element) | 向指定位置插入元素。 |
| public boolean addAll(Collection c) | 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。 |
| public boolean addAll(int index, Collection c) | 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。 |
| public void addFirst(E e) | 元素添加到头部。 |
| public void addLast(E e) | 元素添加到尾部。 |
| public boolean offer(E e) | 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
| public boolean offerFirst(E e) | 头部插入元素,返回是否成功,成功为 true,失败为 false。 |
| public boolean offerLast(E e) | 尾部插入元素,返回是否成功,成功为 true,失败为 false。 |
| public void clear() | 清空链表。 |
| public E removeFirst() | 删除并返回第一个元素。 |
| public E removeLast() | 删除并返回最后一个元素。 |
| public boolean remove(Object o) | 删除某一元素,返回是否成功,成功为 true,失败为 false。 |
| public E remove(int index) | 删除指定位置的元素。 |
| public E poll() | 删除并返回第一个元素。 |
| public E remove() | 删除并返回第一个元素。 |
| public boolean contains(Object o) | 判断是否含有某一元素。 |
| public E get(int index) | 返回指定位置的元素。 |
| public E getFirst() | 返回第一个元素。 |
| public E getLast() | 返回最后一个元素。 |
| public int indexOf(Object o) | 查找指定元素从前往后第一次出现的索引。 |
| public int lastIndexOf(Object o) | 查找指定元素最后一次出现的索引。 |
| public E peek() | 返回第一个元素。 |
| public E element() | 返回第一个元素。 |
| public E peekFirst() | 返回头部元素。 |
| public E peekLast() | 返回尾部元素。 |
| public E set(int index, E element) | 设置指定位置的元素。 |
| public Object clone() | 克隆该列表。 |
| public Iterator descendingIterator() | 返回倒序迭代器。 |
| public int size() | 返回链表元素个数。 |
| public ListIterator listIterator(int index) | 返回从指定位置开始到末尾的迭代器。 |
| public Object[] toArray() | 返回一个由链表元素组成的数组。 |
| public T[] toArray(T[] a) | 返回一个由链表元素转换类型而成的数组。 |

二、Java HashSet:

HashSet是基于HashMap实现的,是不允许有重复元素的集合。HashSet允许有null值。HashSet是无序的,即不会记录插入的顺序。HashSet不是线程安全的,如果多个线程修改HashSet,则最终结果是不确定的。

HashSet基本类型对应的包装类表:

|-------------|---------------|
| 基本类型 | 引用类型 |
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |

1、添加元素:

// 引入 HashSet 类

import java.util.HashSet;

public class RunoobTest {

public static void main(String[] args) {

HashSet<String> sites = new HashSet<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Zhihu");

System.out.println(sites);

}

}

2、判断元素是否存在:

// 引入 HashSet 类

import java.util.HashSet;

public class RunoobTest {

public static void main(String[] args) {

HashSet<String> sites = new HashSet<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Zhihu");

System.out.println(sites.contains("Taobao"));

}

}

3、删除元素:

// 引入 HashSet 类

import java.util.HashSet;

public class RunoobTest {

public static void main(String[] args) {

HashSet<String> sites = new HashSet<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Zhihu");

sites.clear();

System.out.println(sites);

}

}

4、计算大小:

// 引入 HashSet 类

import java.util.HashSet;

public class RunoobTest {

public static void main(String[] args) {

HashSet<String> sites = new HashSet<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Zhihu");

System.out.println(sites.size());

}

}

5、迭代HashSet:

// 引入 HashSet 类

import java.util.HashSet;

public class RunoobTest {

public static void main(String[] args) {

HashSet<String> sites = new HashSet<String>();

sites.add("Google");

sites.add("Taobao");

sites.add("Zhihu");

for (String i : sites) {

System.out.println(i);

}

}

}

三、Java HashMap:

HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap实现Map接口,根据键的HashCode值存储数据,快速访问,最多允许一条记录的键为null,不支持线程同步。HashMap是无序的,不记录插入的顺序。

1、添加元素:

// 引入 HashMap 类

import java.util.HashMap;

public class RunoobTest {

public static void main(String[] args) {

// 创建 HashMap 对象 Sites

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

// 添加键值对

Sites.put(1, "Google");

Sites.put(2, "Taobao");

Sites.put(3, "Zhihu");

System.out.println(Sites);

}

}

2、访问元素:

// 引入 HashMap 类

import java.util.HashMap;

public class RunoobTest {

public static void main(String[] args) {

// 创建 HashMap 对象 Sites

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

// 添加键值对

Sites.put(1, "Google");

Sites.put(2, "Taobao");

Sites.put(3, "Zhihu");

System.out.println(Sites.get(3));

}

}

3、删除元素:

// 引入 HashMap 类

import java.util.HashMap;

public class RunoobTest {

public static void main(String[] args) {

// 创建 HashMap 对象 Sites

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

// 添加键值对

Sites.put(1, "Google");

Sites.put(2, "Taobao");

Sites.put(3, "Zhihu");

Sites.remove(3);

System.out.println(Sites);

}

}

4、计算大小:

// 引入 HashMap 类

import java.util.HashMap;

public class RunoobTest {

public static void main(String[] args) {

// 创建 HashMap 对象 Sites

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

// 添加键值对

Sites.put(1, "Google");

Sites.put(2, "Taobao");

Sites.put(3, "Zhihu");

System.out.println(Sites.size());

}

}

5、迭代HashMap:

// 引入 HashMap 类

import java.util.HashMap;

public class RunoobTest {

public static void main(String[] args) {

// 创建 HashMap 对象 Sites

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

// 添加键值对

Sites.put(1, "Google");

Sites.put(2 "Taobao");

Sites.put(3, "Zhihu");

// 输出 key 和 value

for (Integer i : Sites.keySet()) {

System.out.println("key: " + i + " value: " + Sites.get(i));

}

// 返回所有 value 值

for(String value: Sites.values()) {

// 输出每一个value

System.out.print(value + ", ");

}

}

}

HashMap方法:

|------------------------|----------------------------------------------------------|
| 方法 | 描述 |
| clear() | 删除 hashMap 中的所有键/值对 |
| clone() | 复制一份 hashMap |
| isEmpty() | 判断 hashMap 是否为空 |
| size() | 计算 hashMap 中键/值对的数量 |
| put() | 将键/值对添加到 hashMap 中 |
| putAll() | 将所有键/值对添加到 hashMap 中 |
| putIfAbsent() | 如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。 |
| remove() | 删除 hashMap 中指定键 key 的映射关系 |
| containsKey() | 检查 hashMap 中是否存在指定的 key 对应的映射关系。 |
| containsValue() | 检查 hashMap 中是否存在指定的 value 对应的映射关系。 |
| replace() | 替换 hashMap 中是指定的 key 对应的 value。 |
| replaceAll() | 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。 |
| get() | 获取指定 key 对应对 value |
| getOrDefault() | 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值 |
| forEach() | 对 hashMap 中的每个映射执行指定的操作。 |
| entrySet() | 返回 hashMap 中所有映射项的集合集合视图。 |
| keySet () | 返回 hashMap 中所有 key 组成的集合视图。 |
| values() | 返回 hashMap 中存在的所有 value 值。 |
| merge() | 添加键值对到 hashMap 中 |
| compute() | 对 hashMap 中指定 key 的值进行重新计算 |
| computeIfAbsent() | 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中 |
| computeIfPresent() | 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。 |

相关推荐
superlls3 分钟前
(Spring)Spring Boot 中 @Valid 与全局异常处理器的联系详解
java·spring boot·后端
一念&10 分钟前
每日一个C语言知识:C 字符串
c语言·开发语言
知识分享小能手23 分钟前
uni-app 入门学习教程,从入门到精通,uni-app 基础知识详解 (2)
前端·javascript·windows·学习·微信小程序·小程序·uni-app
0110_102427 分钟前
tauri + rust的环境搭建---初始化以及构建
开发语言·后端·rust
会开花的二叉树29 分钟前
C++微服务 UserServer 设计与实现
开发语言·c++·微服务
像风一样自由202032 分钟前
Rust Tokio vs Go net/http:云原生与嵌入式生态选型指南
开发语言·golang·rust
DuHz34 分钟前
C程序中的数组与指针共生关系
linux·c语言·开发语言·嵌入式硬件·算法
我星期八休息38 分钟前
C++智能指针全面解析:原理、使用场景与最佳实践
java·大数据·开发语言·jvm·c++·人工智能·python
摇滚侠38 分钟前
Spring Boot 3零基础教程,WEB 开发 整合 Thymeleaf 笔记36
java·spring boot·笔记
大猫会长42 分钟前
docker安装php+apache
java·开发语言