Java中List常用API整理

本文详细介绍了Java中List接口的常用API,包括添加、删除、查找、修改元素及集合操作,涉及ArrayList、LinkedList、HashSet等实现。同时涵盖了Set接口的区别和Map接口的Key-Value操作,以及特殊类如HashMap、TreeMap的深入分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中List常用API整理

List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来。

1 collection的API介绍

1.1 boolean add(E e)

添加元素到Collection集合中。

1.2 boolean addAll(Collection<? extends E> c)

将指定c中的所有元素都添加到此Collection集合中。

1.3 void clear()

移除此collection集合中的所有元素

1.4 boolean contains(Object o)

检查Collection集合中是否包含o对象,如果包含则返回true,否则返回false。

1.5 boolean containsAll(Collection<?> c)

检查Collection集合中是否包含c的全部对象,全部包含则返回true,否则返回false。

1.6 boolean equals(Object o)

比较此collection集合与指定对象是否相等,是比较的是里面元素是否相等,而不是比较地址是否相等。

在Object类中,equals()方法底层就是“==”,也就是说就是比较地址是否相等,但是继承后,大多数的类都重写了该方法。

由于Collection是接口,不能直接new对象,所以只能new一个它的子类。

下面这个是Object类的equals()方法,底层就是用"=="。

下面我们来看Collection的一个实现类Vector。

Vector是继承了AbstractList

所以它的equals方法是调用了父类的方法

我们再跟进去看看。真的是重写的equals方法

1.7 int hashCode()

返回此Collection集合的哈希码值。

1.9 boolean isEmpty()

检查Collection集合是否包含有元素,如果没有包含元素,则返回true,否则返回false。

此方法与contains方法的区别是,此方法是判断集合是否包含有元素,就是说,如果一个元素都没有的话就返回true,如果有一个或者以上就返回false。

contains的方法是判断集合中是否包含特定的元素,如果包含特定的元素就返回true,如果没有包含特定元素就返回false。

1.9 Iterator<E> iterator()

返回在此collection集合的元素上进行迭代的迭代器

注意:迭代过程中不能用集合里的添加、删除等方法修改集合,不然会报错。

如果想在迭代过程中还想操作集合,那么只能用迭代器类里面的方法。

1.10 boolean remove(Object o)


从collection集合中删除指定的元素,如果集合中有这个元素,并且删除成功,那么就返回true,否则返回false。

1.11 boolean removeAll(Collection<?> c)

从集合中删除c集合中所有的元素

1.12 boolean retainAll(Collection<?> c)

集合中仅保留c集合中的所有元素

1.13 int size()

返回集合中元素个数

1.14 Object[] toArray()

返回包含此collection集合中所有元素的数组

2 关系介绍

Map<K,V>是键值对,K - 此映射所维护的键的类型,V - 映射值的类型。键值是一一对应的关系;

Collection是只有键,底层也是由键值对,但是值的类型被隐藏起来。

2.1 Collection

List里面可以放重复的元素,Set里面不可以放重复的元素。

1、ArrayList底层是用数组实现的,LinkedList底层是用链表实现的,Vector底层也是用数组实现的。
2、HashSet底层是哈希算法实现的,TreeSet底层是用二叉树实现的,LinkedHashSet底层是用链表实现的。

2.2 Map

1、HashMap底层是哈希算法实现的,TreeMap底层是用二叉树实现的,Hashtable底层是哈希算法实现的,LinkedHashMap底层是用链表实现的。

Vector、Hashtable是线程安全的;

ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、LinkedHashMap是线程不安全的。

3 list常见API整理

3.1 void add(int index, E element)

在指定位置插入元素,后面的元素都往后移一个元素。

3.2 boolean addAll(int index, Collection c)

在指定的位置中插入c集合全部的元素,如果集合发生改变,则返回true,否则返回false。

意思就是当插入的集合c没有元素,那么就返回false,如果集合c有元素,插入成功,那么就返回true。

3.3 E get(int index)

返回list集合中指定索引位置的元素

3.4 int indexOf(Object o)

返回list集合中第一次出现o对象的索引位置,如果list集合中没有o对象,那么就返回-1

3.5 ListIterator<E> listIterator()

返回此列表元素的列表迭代器(按适当顺序)。

listIterator和iterator的区别是什么呢?下面这篇博客比较详细的分析,可以参考。

https://blog.csdn.net/longshengguoji/article/details/41551491

这里大概讲一下他们的区别:

当只需要遍历集合时,两个迭代器的功能都是一样。

但是listIterator迭代器只能用于List和他的实现子类,iterator迭代器可以用于所有的集合使用。

所不同的就是listIterator迭代器的功能会比iterator迭代器的功能要多。

listIterator迭代器可以在遍历集合时添加、修改和删除,而iterator迭代器在遍历集合时只有删除。

3.6 ListIterator<E> listIterator(int index)

从指定位置开始,返回此列表元素的列表迭代器(按适当顺序)。

和上面那个迭代器不同的就是多了一个参数,就是能控制迭代器开始的位置。

3.7 E remove(int index)

删除指定索引的对象

3.8 E set(int index, E element)

在索引为index位置的元素更改为element元素

3.9 List<E> subList(int fromIndex, int toIndex)

返回从索引fromIndex到toIndex的元素集合,包左不包右

4 set常见API整理


Set集合与List集合的区别就是,Set集合的元素不能重复,List集合的元素是可以重复的。

4 map常用API整理

Map集合和Collection集合的区别

Map集合是有Key和Value的,Collection集合是只有Value。

Collection集合底层也是有Key和Value,只是隐藏起来。

4.1 V put(K key, V value)

向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value。

就是说Map集合中的Key是不能重复的,这就类似于Set集合中元素不能重复,但是Map集合中的Value是可以重复。

4.2 void putAll(Map<? extends K,? extends V> m)

向map集合中添加指定集合的所有元素

4.3 void clear()

把map集合中所有的键值删除

4.4 boolean containsKey(Object key)

检出map集合中有没有包含Key为key的元素,如果有则返回true,否则返回false。

4.5 boolean containsValue(Object value)

检出map集合中有没有包含Value为value的元素,如果有则返回true,否则返回false。

4.6 Set<Map.Entry<K,V>> entrySet()

返回map到一个Set集合中,以map集合中的Key=Value的形式返回到set中。

补充:一般我们遍历HashMap的时候,推荐是用这种方式。不用再通过map的get(key)方法拿值,性能会提升。参考sonar代码规范

4.7 boolean equals(Object o)

判断两个Set集合的元素是否相同

底层也是重写了equals方法

查看HashMap集合时,没有发现equals方法,那么我们就去找他的父类。


4.8 V get(Object key)

根据map集合中元素的Key来获取相应元素的Value

4.9 int hashCode()

返回map集合的哈希码值

4.10 boolean isEmpty()

检出map集合中是否有元素,如果没有则返回true,如果有元素则返回false

4.11 Set<K> keySet()

返回map集合中所有Key

4.12 V remove(Object key)

删除Key为key值的元素

4.13 int size()

返回map集合中元素个数

4.14 Collection<V> values()

返回map集合中所有的Value到一个Collection集合

5 hashMap的API整理

5.1 public Object clone()

返回hashMap集合的副本

其余的方法都是实现Map集合的, 见上。

6 hashTable的API整理

6.1 public Object clone()

返回Hashtable的副本

6.2 public Enumeration<V> elements()

返回此哈希表中的值的枚举

其他的方法都是实现Map集合的方法

7 TreeMap的API整理

7.1 public Map.Entry<K,V> ceilingEntry(K key)

返回指定的Key大于或等于的最小值的元素,如果没有,则返回null

7.2 public K ceilingKey(K key)

返回指定的Key大于或等于的最小值的Key,如果没有,则返回null

7.3 public Object clone()

返回集合的副本

7.4 public Comparator<? super K> comparator()

如果使用默认的比较器,就返回null,如果使用其他的比较器,则返回比较器的哈希码值

7.5 public NavigableSet<K> descendingKeySet()

返回集合的全部Key,并且是逆序的

7.6 public NavigableMap<K,V> descendingMap()

把集合逆序返回

7.8 public Map.Entry<K,V> firstEntry()

返回集合中最小Key的元素

7.9 public K firstKey()

返回集合中最小Key的key

7.10 public Map.Entry<K,V> floorEntry(K key)

与ceilingEntry()方法相反,是返回小于等于key的最大Key的元素

7.11 public K floorKey(K key)


返回小于等于key的最大Key的key

7.12 public SortedMap<K,V> headMap(K toKey)

返回Key小于toKey的所有元素

7.13 public NavigableMap<K,V> headMap(K toKey, boolean inclusive)

当inclusive为true时,就是返回Key小于等于toKey的所有元素

7.14 public Map.Entry<K,V> higherEntry(K key)

返回Key大于key的所有元素

7.15 public K higherKey(K key)

返回Key大于key的所有Key

7.16 public Map.Entry<K,V> lastEntry()

返回Key最大的元素

7.17 public K lastKey()

返回Key最大的Key

7.18 public Map.Entry<K,V> lowerEntry(K key)

返回小于key的最大元素

7.19 public K lowerKey(K key)

返回小于key最大的Key

7.20 public Map.Entry<K,V> pollFirstEntry()

删除key最小的元素

7.21 public Map.Entry<K,V> pollLastEntry()

删除最大Key的元素

7.22 public NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)

截取集合中Key从fromKey到toKey的元素,否是截取他们本身,取决于true或者false

7.23 public SortedMap<K,V> subMap(K fromKey, K toKey)

截取集合中Key从fromKey到toKey的元素,包括fromKey,不包括toKey

7.24 public SortedMap<K,V> tailMap(K fromKey)

截取Key大于等于fromKey的所有元素

7.25 public NavigableMap<K,V> tailMap(K fromKey, boolean inclusive)

当inclusive为true时,截取Key大于等于fromKey的所有元素,否则截取Key大于fromKey的所有元素

8 其余注意点

  1. list 里面可以嵌套list
import java.util.ArrayList;
import java.util.List;
 
 
public class Test {
    public static void main(String[] args){
        List<List<List<String>>> listListList = new ArrayList<List<List<String>>>();
        List<List<String>> listList = new ArrayList<List<String>>();
        List<String> list = new ArrayList<String>();
        list.add("test");
        listList.add(list);
        listListList.add(listList);
        System.out.println(listListList);
    }
}
<think>好的,我现在需要帮用户查找Java编程中常用API列表及用法。首先,用户提到了参考中的引用[1]和引用[2],里面提到了ArrayList、Configuration类、FileSystem类等。这说明用户可能对集合类、文件操作相关的API感兴趣。 接下来,我应该先整理Java中最常用API类别,比如集合框架、IO/NIO、多线程、网络编程、数据库连接等。用户示例中的引用涉及集合和Hadoop文件系统,所以可能需要详细说明这些部分。 用户可能需要具体的示例代码,比如如何创建ArrayList,如何使用FileSystem操作HDFS。同时,用户的问题还要求生成相关问题,所以需要预先考虑用户可能进一步询问的方向,比如性能优化、使用场景等。 另外,注意用户提到的系统级指令,比如行内公式用$...$,独立公式用$$...$$,但当前问题可能不涉及数学公式,所以可能不需要处理这部分。但需要确保LaTeX语法正确,如果有变量的话。 用户引用的内容中,引用[1]是ArrayList的初始化示例,引用[2]是关于Hadoop文件系统的操作类,比如Configuration和FileSystem。需要将这些内容自然地融入到回答中,并在引用处添加标识。 可能还需要补充其他常用API,比如String相关的方法,日期时间APIJava 8的Time API),多线程中的ExecutorService,网络编程中的Socket,数据库的JDBC等。每个部分给出简洁的示例,如代码片段,并说明用途。 最后,生成的相关问题需要与Java API相关,可能涉及如何选择集合类、IO和NIO的区别、多线程同步方法、JDBC连接步骤等。确保问题覆盖用户可能感兴趣的后续知识点。</think>### Java常用API列表及用法指南 #### 一、集合框架(核心API) 1. **ArrayList** 基础用法:动态数组实现,支持快速随机访问 ```java ArrayList<String> list = new ArrayList<>(); //初始化[^1] list.add("Java"); //添加元素 String element = list.get(0); //获取元素 ``` 2. **HashMap** 键值对存储结构,时间复杂度$O(1)$ ```java HashMap<Integer, String> map = new HashMap<>(); map.put(1, "API"); String value = map.get(1); ``` #### 二、文件操作API 1. **HDFS文件系统操作**(需hadoop-core依赖) ```java // 读取HDFS文件示例[^2] Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create("hdfs://hadoop1:9000"), conf); FSDataInputStream in = fs.open(new Path("/input.txt")); ``` 2. **本地文件IO** ```java // 使用Java NIO读取文件 Path path = Paths.get("data.txt"); List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); ``` #### 三、多线程API 1. **ExecutorService** 线程池管理工具 ```java ExecutorService executor = Executors.newFixedThreadPool(5); executor.submit(() -> System.out.println("多线程任务")); ``` 2. **synchronized** 同步代码块实现线程安全 ```java public synchronized void criticalSection() { // 线程安全操作 } ``` #### 四、数据库连接(JDBC) ```java // MySQL连接示例 Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "user", "pass"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); ``` #### 五、新特性APIJava 8+) 1. **Stream API** 函数式数据处理 ```java List<Integer> numbers = Arrays.asList(1,2,3); int sum = numbers.stream().filter(n -> n%2==0).mapToInt(n->n).sum(); ``` 2. **DateTime API** 时间日期处理 ```java LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值