JAVA集合和数组的常用方法(总结)

Java中有哪些集合?✍

Java中提供了多种集合类型,共分为三个大类:

  1. List(列表):元素按照插入顺序有序排列,可以包含重复元素。常用实现类有ArrayList、LinkedList和Vector。

  2. Set(集合):元素无序排列,不允许包含重复元素。常用实现类有HashSet、LinkedHashSet和TreeSet。

  3. Map(映射表):元素由键-值对(key-value pair)组成,每个键在Map中唯一对应一个值。常用实现类有HashMap、LinkedHashMap和TreeMap。

这些集合都包含在java.util包中。此外,Java还提供了两个通用的集合接口:

  1. Collection:所有集合类的基本接口,定义了集合的基本操作方法,例如添加元素、删除元素、遍历元素等。

  2. Iterator:迭代器接口,用于遍历集合元素,提供了hasNext()和next()方法。

需要注意的是,Java 8开始提供了流式编程框架(Stream API),它提供了基于Lambda表达式的数据处理方式,对集合的处理更加灵活高效。除了上述的集合类型,Stream API提供了IntStream、LongStream、DoubleStream等新的集合类型,用于处理基本数据类型的元素。

List集合实现类的方法

Java中的List是一种有序集合,允许重复元素。Java提供了多个List实现类,包括ArrayList、LinkedList和Vector。以下是它们的常用方法:

1. ArrayList

ArrayList使用可变数组来存储元素,因此能够快速随机访问元素。

  • add(E e):将指定元素添加到List尾部。
  • add(int index, E element):在指定位置插入指定元素。
  • remove(int index):移除指定位置的元素。
  • get(int index):获取指定位置的元素。
  • set(int index, E element):将指定位置的元素替换为新元素。
  • size():返回List中元素的数量。
  • clear():清空List中所有元素。

2. LinkedList

LinkedList使用双向链表来存储元素,因此能够快速在任意位置插入或删除元素。

  • add(E e):将指定元素添加到List尾部。
  • add(int index, E element):在指定位置插入指定元素。
  • remove(int index):移除指定位置的元素。
  • get(int index):获取指定位置的元素。
  • set(int index, E element):将指定位置的元素替换为新元素。
  • size():返回List中元素的数量。
  • clear():清空List中所有元素。

3. Vector

Vector与ArrayList类似,但是线程安全。不过,如果不需要线程安全,则建议使用ArrayList。

  • add(E e):将指定元素添加到List尾部。
  • add(int index, E element):在指定位置插入指定元素。
  • remove(int index):移除指定位置的元素。
  • get(int index):获取指定位置的元素。
  • set(int index, E element):将指定位置的元素替换为新元素。
  • size():返回List中元素的数量。
  • clear():清空List中所有元素。

这些方法在List的所有实现类中都存在,但是它们的具体实现可能会有所不同。此外,List还提供了一些特定于某些实现的方法,例如:

  • ArrayList和Vector

    • public Iterator iterator():返回List中所有元素的迭代器。
    • public ListIterator listIterator():返回List中所有元素的列表迭代器。
  • LinkedList

    • public void addFirst(E e):将指定元素添加到List头部。
    • public void addLast(E e):将指定元素添加到List尾部。
    • public E getFirst():获取List头部的元素。
    • public E getLast():获取List尾部的元素。

此外,还可以使用List接口提供的toArray()方法将List转换为数组,并对该数组进行操作。

Set集合实现类的方法

Java中的Set是一种无序集合,其中不允许有重复元素。

具体来说,如果将两个对象加入到同一个Set中,其中一个对象已经存在,则新对象将被忽略并保留原先的对象。这使得Set成为一种非常有用的数据结构,可以用于去除重复项并进行高效的查找和比较操作。

Java提供了多个Set实现类,包括HashSet、LinkedHashSet和TreeSet。以下是它们的常用方法:

1. HashSet

HashSet使用哈希表来存储元素,因此可以快速查找元素。它不保证元素的顺序。

  • add(E e):将指定元素添加到Set中。
  • remove(Object o):从Set中移除指定元素。
  • contains(Object o):判断Set是否包含指定元素。
  • size():返回Set中元素的数量。
  • clear():清空Set中所有元素。

2. LinkedHashSet

LinkedHashSet维护插入顺序,即按照元素插入Set的顺序进行迭代遍历。

  • add(E e):将指定元素添加到Set中。
  • remove(Object o):从Set中移除指定元素。
  • contains(Object o):判断Set是否包含指定元素。
  • size():返回Set中元素的数量。
  • clear():清空Set中所有元素。

3. TreeSet

TreeSet使用红黑树来存储元素,因此能够以排序的方式存储元素。注意,如果要使用自定义排序规则,则要求元素实现Comparable接口或传递一个Comparator对象给TreeSet构造器。

  • add(E e):将指定元素添加到Set中。
  • remove(Object o):从Set中移除指定元素。
  • contains(Object o):判断Set是否包含指定元素。
  • size():返回Set中元素的数量。
  • clear():清空Set中所有元素。

这些方法在Set的所有实现类中都存在,但是它们的具体实现可能会有所不同。此外,Set还提供了一些特定于某些实现的方法,例如:

  • HashSet和LinkedHashSet

    • public Iterator iterator():返回Set中所有元素的迭代器。
  • TreeSet

    • public E first():返回Set中第一个(最小的)元素。
    • public E last():返回Set中最后一个(最大的)元素。

此外,还可以使用Set接口提供的toArray()方法将Set转换为数组,并对该数组进行操作。

Map集合实现类的方法

Java中的Map是一种键值对存储结构,其中每个键都唯一对应一个值。常用Map实现类有HashMap、LinkedHashMap和TreeMap。以下是它们的常用方法:

1.HashMap

HashMap是一种基于哈希表实现的键值对存储结构,可以快速地根据键来查找值。

  • put(K key, V value):将指定的键值对添加到Map中。
  • get(Object key):获取指定键所对应的值。
  • remove(Object key):从Map中移除指定键所对应的键值对。
  • containsKey(Object key):判断Map是否包含指定的键。
  • size():返回Map中键值对的数量。
  • clear():清空Map中所有的键值对。

2. LinkedHashMap

LinkedHashMap与HashMap类似,但它保持了插入顺序,即元素按照它们插入的顺序进行迭代访问。

  • put(K key, V value):将指定的键值对添加到Map中。
  • get(Object key):获取指定键所对应的值。
  • remove(Object key):从Map中移除指定键所对应的键值对。
  • containsKey(Object key):判断Map是否包含指定的键。
  • size():返回Map中键值对的数量。
  • clear():清空Map中所有的键值对。

3. TreeMap

TreeMap按照键的自然排序(默认升序)或者自定义排序规则来维护键值对。注意,如果使用自定义排序规则,则要求键实现Comparable接口或传递一个Comparator对象给TreeMap构造器。

  • put(K key, V value):将指定的键值对添加到Map中。
  • get(Object key):获取指定键所对应的值。
  • remove(Object key):从Map中移除指定键所对应的键值对。
  • containsKey(Object key):判断Map是否包含指定的键。
  • size():返回Map中键值对的数量。
  • clear():清空Map中所有的键值对。

这些方法在Map的所有实现类中都存在,但是它们的具体实现可能会有所不同。此外,Map还提供了一些特定于某些实现的方法,例如:

  • HashMap和LinkedHashMap

    • public Collection values():返回Map中所有值的Collection视图。
    • public Set<Map.Entry<K, V>> entrySet():返回Map中所有键值对的Set视图。
  • TreeMap

    • public Map.Entry<K, V> firstEntry():返回Map中第一个(最小的)键值对。
    • public Map.Entry<K, V> lastEntry():返回Map中最后一个(最大的)键值对。

此外,还可以使用Map接口提供的keySet()方法来获取Map中所有键的Set视图,然后可以在该Set上执行迭代等操作。

♒罗列一下Java中各个集合接口的方法♒

Java中的集合框架提供了多个接口,每个接口都有自己特定的方法。以下是Java中常见的集合接口及其方法:

1. Collection接口

Collection接口是Java集合框架中最基本的接口,它表示一组对象的容器,并提供了基本的操作方法来管理集合中的元素,如添加、删除、遍历等。

该接口下还派生出了许多其他的子接口和实现类,如List、Set、Queue等。

其中,List接口可以维护元素的顺序并允许重复,Set接口不允许重复元素并且没有顺序,Queue接口则代表了一种先进先出的队列数据结构。

通过这些接口,我们可以选择不同的集合类型来满足不同的需求。

  • int size():返回集合中元素的数量
  • boolean isEmpty():判断集合是否为空
  • boolean contains(Object obj):判断集合是否包含指定的元素
  • boolean add(E e):向集合中添加一个元素
  • boolean remove(Object obj):从集合中移除指定的元素
  • void clear():清空集合中所有元素
  • Iterator iterator():返回该集合上的迭代器

举例说明Collection接口常用的方法

Java中的Collection是一个接口,常用的实现类有List、Set和Queue等。Collection接口定义了许多常用的方法,下面列举了一些常用的方法及其作用:

  1. add(E e):向集合中添加一个元素,并返回true。
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
  1. remove(Object o):从集合中删除指定对象的第一个出现。
list.remove("apple"); // 删除列表中第一个出现的"apple"
  1. contains(Object o):判断集合是否包含指定对象,如果包含则返回true,否则返回false。
boolean containsBanana = list.contains("banana"); // 判断集合中是否包含"banana"
  1. size():返回集合中的元素数量。
int size = list.size(); // 获取集合中的元素数量
  1. isEmpty():判断集合是否为空。
boolean empty = list.isEmpty(); // 判断集合是否为空
  1. clear():删除集合中的所有元素。
list.clear(); // 删除集合中的所有元素
  1. iterator():返回迭代器,用于遍历集合中的元素。
ListIterator<String> iter = list.listIterator();
while (iter.hasNext()) {
    String element = iter.next();
    System.out.println(element);
}
  1. addAll(Collection<? extends E> c):将另一个集合中的所有元素添加到当前集合中。
List<String> otherList = new ArrayList<>();
otherList.add("orange");
otherList.add("pear");
list.addAll(otherList); // 将otherList集合中的元素添加到list集合中
  1. removeAll(Collection<?> c):删除集合中在另一个集合指定的元素。
List<String> listToRemove = new ArrayList<>();
listToRemove.add("banana");
list.removeAll(listToRemove); // 从集合中删除"banana"
  1. retainAll(Collection<?> c):保留集合中在另一个集合指定的元素,删除不在另一个集合中的元素。
List<String> listToRetain = new ArrayList<>();
listToRetain.add("banana");
list.retainAll(listToRetain); // 保留集合中的"banana"元素,删除其他元素

2. List接口

List接口是Java集合框架中的一种有序集合类型,可以存储重复元素,并提供了按照索引访问、添加、删除等操作方法。

List接口的常用实现类包括ArrayList和LinkedList,其中ArrayList底层使用数组实现,支持随机访问和快速插入/删除操作;而LinkedList底层使用链表实现,支持快速插入/删除操作,但不支持随机访问。

除此之外,List接口还提供了一些特殊的操作方法,如截取子列表、替换元素等。由于List接口具有有序、可重复的特点,因此通常用于需要维护元素顺序并可能存在重复元素的场景,如记录日志、保存聊天记录等。

List继承于Collection接口,因此它具有Collection接口中定义的所有方法,以及以下额外的方法:

  • E get(int index):返回列表中指定位置的元素
  • E set(int index, E element):用指定元素替换列表中指定位置的元素
  • void add(int index, E element):在列表的指定位置插入指定元素
  • E remove(int index):移除列表中指定位置的元素
  • int indexOf(Object o):返回列表中指定元素的第一次出现的索引值
  • int lastIndexOf(Object o):返回列表中指定元素的最后一次出现的索引值

举例说明List接口常用的方法

Java中List是一个接口,常用的实现类有ArrayList和LinkedList。List接口定义了许多常用的方法,下面列举了一些常用的方法及其作用:

  1. add(E e):将元素添加到列表末尾,并返回true。
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
  1. add(int index, E element):在指定位置插入元素。
list.add(1, "orange"); // 将"orange"插入到索引为1的位置上
  1. remove(Object o):从列表中删除指定对象的第一个出现。
list.remove("apple"); // 删除列表中第一个出现的"apple"
  1. remove(int index):删除指定位置的元素。
list.remove(0); // 删除列表中索引为0的元素
  1. get(int index):获取指定位置的元素。
String fruit = list.get(1); // 获取列表中索引为1的元素
  1. set(int index, E element):用指定元素替换列表中指定位置的元素,并返回原来的元素。
String oldFruit = list.set(0, "pear"); // 将列表中索引为0的元素替换成"pear",并返回原来的"apple"
  1. size():返回列表中的元素数量。
int size = list.size(); // 获取列表中的元素数量
  1. indexOf(Object o):返回指定对象在列表中第一次出现的索引,如果不存在则返回-1。
int index = list.indexOf("banana"); // 获取"banana"在列表中第一次出现的索引
  1. isEmpty():判断列表是否为空。
boolean empty = list.isEmpty(); // 判断列表是否为空
  1. clear():删除列表中的所有元素。
list.clear(); // 删除列表中的所有元素

3. Set接口

Set接口是Java集合框架中的一种无序集合类型,不允许存储重复元素,并提供了添加、删除、查找等基本操作方法。

Set接口的常用实现类包括HashSet和TreeSet,其中HashSet底层使用哈希表实现,支持快速的插入和删除操作;而TreeSet底层使用红黑树实现,可以保证元素有序并具有较好的查找性能。

由于Set接口不允许重复元素的存在,因此通常用于需要去重的场景,如统计词频、过滤重复数据等。

Set继承于Collection接口,因此它具有Collection接口中定义的所有方法,以及以下额外的方法:

  • boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到此集合中
  • boolean removeAll(Collection<?> c):从该集合中移除包含在指定集合中的所有元素
  • boolean retainAll(Collection<?> c):仅保留该集合中包含在指定集合中的元素

举例说明Set接口常用的方法

Java中的Set是一个接口,常用的实现类有HashSet、LinkedHashSet和TreeSet。Set接口继承自Collection接口,因此除了Collection中定义的方法外,还定义了一些特定于集合的方法。下面列举了一些Set集合常用的方法及其作用:

  1. add(E e):将元素添加到集合中,并返回true,如果元素已存在则不会添加。
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
  1. remove(Object o):从集合中删除指定对象,如果对象存在则返回true,否则返回false。
set.remove("apple"); // 从集合中删除"apple"
  1. contains(Object o):判断集合是否包含指定对象,如果包含则返回true,否则返回false。
boolean containsBanana = set.contains("banana"); // 判断集合中是否包含"banana"
  1. size():返回集合中的元素数量。
int size = set.size(); // 获取集合中的元素数量
  1. isEmpty():判断集合是否为空。
boolean empty = set.isEmpty(); // 判断集合是否为空
  1. clear():删除集合中的所有元素。
set.clear(); // 删除集合中的所有元素
  1. iterator():返回迭代器,用于遍历集合中的元素。
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
    String element = iter.next();
    System.out.println(element);
}
  1. addAll(Collection<? extends E> c):将另一个集合中的所有元素添加到当前集合中。
Set<String> otherSet = new HashSet<>();
otherSet.add("orange");
otherSet.add("pear");
set.addAll(otherSet); // 将otherSet集合中的元素添加到set集合中
  1. removeAll(Collection<?> c):删除集合中在另一个集合指定的元素。
Set<String> setToRemove = new HashSet<>();
setToRemove.add("banana");
set.removeAll(setToRemove); // 从集合中删除"banana"
  1. retainAll(Collection<?> c):保留集合中在另一个集合指定的元素,删除不在另一个集合中的元素。
Set<String> setToRetain = new HashSet<>();
setToRetain.add("banana");
set.retainAll(setToRetain); // 保留集合中的"banana"元素,删除其他元素

4. Map接口

Map接口是Java集合框架中的一种键值对映射容器,用于存储一组具有唯一键的对象,并提供了基本的操作方法来管理这些对象。

Map接口的常用实现类包括HashMap和TreeMap,其中HashMap底层使用哈希表实现,支持快速查找和插入操作;而TreeMap底层使用红黑树实现,可以保证元素按照键的自然顺序排序并具有较好的查找性能。

除此之外,Map接口还提供了许多特殊的操作方法,如获取所有键、获取所有值、键值对遍历等。

由于Map接口允许通过键来快速查找对应的值,因此通常用于需要快速查找、保存、更新数据的场景,如缓存、配置文件解析等。

  • int size():返回Map中键值对的数量

  • boolean isEmpty():判断Map是否为空

  • boolean containsKey(Object key):判断Map是否包含给定的键

  • boolean containsValue(Object value):判断Map是否包含给定的值

  • V get(Object key):返回与指定键关联的值

  • V put(K key, V value):将指定的键值对添加到Map中

  • V remove(Object key):从Map中移除指定键的映射关系

  • void putAll(Map<? extends K,? extends V> m):将指定Map中所有的映射关系添加到该Map中

  • void clear():从Map中移除所有映射关系

  • Set keySet():返回Map中所有键的Set视图

  • Collection values():返回Map中所有值的Collection视图

  • Set<Map.Entry<K, V>> entrySet():返回Map中所有键值对的Set视图

举例说明Map接口常用的方法

Java中的Map是一个接口,常用的实现类有HashMap、LinkedHashMap和TreeMap。Map接口定义了许多常用的方法,下面列举了一些常用的方法及其作用:

  1. put(K key, V value):将指定的键值对添加到Map中,并返回该key之前映射的value(如果存在),否则返回null。
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
  1. get(Object key):返回与指定键关联的值,如果没有找到映射,则返回null。
Integer value = map.get("apple"); // 获取key为"apple"的value
  1. remove(Object key):从Map中删除指定键的映射,并返回与键关联的值(如果存在),否则返回null。
Integer removedValue = map.remove("banana"); // 删除key为"banana"的映射,并返回对应的value
  1. containsKey(Object key):如果Map包含指定的键,则返回true,否则返回false。
boolean containsApple = map.containsKey("apple"); // 判断Map中是否包含key为"apple"
  1. containsValue(Object value):如果Map中包含指定的值,则返回true,否则返回false。
boolean containsOne = map.containsValue(1); // 判断Map中是否包含value为1的映射
  1. size():返回Map中的键值对数量。
int size = map.size(); // 获取Map中的键值对数量
  1. keySet():返回Map中所有键组成的Set集合。
Set<String> keySet = map.keySet(); // 获取Map中所有键组成的Set集合
  1. values():返回Map中所有值组成的Collection集合。
Collection<Integer> values = map.values(); // 获取Map中所有值组成的Collection集合
  1. entrySet():返回Map中所有键值对组成的Set集合。
Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); // 获取Map中所有键值对组成的Set集合
  1. clear():从Map中删除所有键值对。
map.clear(); // 从Map中删除所有键值对

Java中有哪些数组?✍

Java 中主要有以下几种类型的数组:

  1. 一维数组:最常见的数组类型,它包含单个行或列。每个元素都可以通过其索引进行访问。

    int[] arr = new int[5]; // 定义一个长度为5的整型数组
    
  2. 多维数组:由多个一维数组组成的数组。Java 中支持的多维数组是二维数组和三维数组。

    int[][] arr2D = new int[3][4]; // 定义一个3行4列的二维整数数组
    int[][][] arr3D = new int[3][4][5]; // 定义一个3行4列5深度的三维整数数组
    

除了这些常见的数组类型,还有一些特殊的数组类型,例如 ArrayList 和 Vector,它们实际上是使用动态数组实现的集合(Collection)类,并不是真正的数组。

数组的常用方法

Java数组是一种基础且重要的数据结构,常用的数组方法包括:

  1. length:返回数组长度。

示例代码:

int[] nums = {1, 2, 3, 4, 5};
System.out.println(nums.length); // 输出 5
  1. clone:复制数组。

示例代码:

int[] nums1 = {1, 2, 3, 4, 5};
int[] nums2 = nums1.clone();
System.out.println(Arrays.toString(nums2)); // 输出 [1, 2, 3, 4, 5]
  1. toString:将数组转换为字符串。

示例代码:

int[] nums = {1, 2, 3, 4, 5};
String str = Arrays.toString(nums);
System.out.println(str); // 输出 [1, 2, 3, 4, 5]
  1. equals:比较两个数组是否相等。

示例代码:

int[] nums1 = {1, 2, 3, 4, 5};
int[] nums2 = {1, 2, 3, 4, 5};
boolean flag = Arrays.equals(nums1, nums2);
System.out.println(flag); // 输出 true
  1. sort:对数组进行排序。

示例代码:

int[] nums = {5, 2, 1, 4, 3};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums)); // 输出 [1, 2, 3, 4, 5]
  1. binarySearch:在有序数组中查找指定元素的位置。

示例代码:

int[] nums = {1, 2, 3, 4, 5};
int index = Arrays.binarySearch(nums, 3);
System.out.println(index); // 输出 2
  1. copyOf:复制指定长度的数组。

示例代码:

int[] nums1 = {1, 2, 3, 4, 5};
int[] nums2 = Arrays.copyOf(nums1, 3);
System.out.println(Arrays.toString(nums2)); // 输出 [1, 2, 3]
  1. fill:填充数组元素。

示例代码:

int[] nums = new int[5];
Arrays.fill(nums, 1);
System.out.println(Arrays.toString(nums)); // 输出 [1, 1, 1, 1, 1]
  1. asList:将数组转换为列表。

示例代码:

String[] strs = {"hello", "world"};
List<String> list = Arrays.asList(strs);
System.out.println(list); // 输出 [hello, world]
  1. hashCode:返回数组的哈希码。

示例代码:

int[] nums = {1, 2, 3, 4, 5};
int code = Arrays.hashCode(nums);
System.out.println(code); // 输出 -862545276

这些方法都是Java数组中常用的方法,掌握它们的使用可以方便地对数组进行操作。当然,Java中还有很多其他的数组相关方法,可以根据实际开发需求进行学习和使用。

数组工具类的常用方法

Java 数组工具类是 java.util.Arrays,它提供了一系列用于操作数组的方法。下面是其中一些常用的方法及其示例:

  1. toString():将数组转换成字符串输出。

    int[] arr = {1, 2, 3, 4};
    String strArr = Arrays.toString(arr); // "[1, 2, 3, 4]"
    
  2. sort():对数组进行排序。

    int[] arr = {4, 2, 1, 3};
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr)); // "[1, 2, 3, 4]"
    
  3. binarySearch():在有序数组中查找指定元素。

    int[] arr = {1, 2, 3, 4};
    int index = Arrays.binarySearch(arr, 3); // 2
    
  4. copyOf():复制数组。

    int[] arr = {1, 2, 3, 4};
    int[] newArr = Arrays.copyOf(arr, 6);
    System.out.println(Arrays.toString(newArr)); // "[1, 2, 3, 4, 0, 0]"
    
  5. fill():填充数组。

    int[] arr = new int[5];
    Arrays.fill(arr, 1);
    System.out.println(Arrays.toString(arr)); // "[1, 1, 1, 1, 1]"
    
  6. asList():将数组转换成列表。

    Integer[] arr = {1, 2, 3, 4};
    List<Integer> list = Arrays.asList(arr);
    

注意,上述示例只是其中一部分,Arrays 类还有其他很多方法。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值