你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)

2年前 (2022) 程序员胖胖胖虎阿
127 0 0

零基础学习Java之集合概述

    • 概述
    • 集合的分类
      • Collection
        • 基本介绍
        • 常用方法
        • 代码示例
      • Map
        • 基本介绍
        • 常用方法
        • 代码示例

概述

数组想必是很多java学习者都知道的容器。诚然,数组有很多的优点,比如:数组可以实现元素的快速访问;但是数组也有很多的缺点,比如:数组的长度是固定的、数组只能存放同一种类型的对象。因此它在实际的开发中用到的也不是很多,因为容器里的元素及其个数,我们大部分情况下是不能确定的,因此集合由此产生了。(实际开发中用的很多,所以说是不懂集合不要说找工作的事哈)

集合与数组一样也是相当于一个容器,可以用来存放很多类型的数据(不能存放基本数据类型数据)。那集合有哪些类型呢?

集合的分类

集合按照其存储结构可以分类为:Collection接口实现的集合和Map接口实现的集合。其中Collection表示的是一组对象,Map表示一组映射关系或者键值对。
你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)

Collection

基本介绍

Collection集合里存储的是一系列符合某种规则的元素,其又按照存储元素的特征进行了分类,即其子接口,下面是常见的子接口:

  • List接口:必须保持元素特定的顺序

  • Set接口:不能有重复元素

  • Queue接口:保持一个队列(先进先出)的顺序你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)

常用方法

Collection接口中对很多常用的方法进行了声明,方便其子接口使用。下面介绍一些常用的方法:

  • int size() :返回此集合中的元素的数目
  • boolean isEmpty():判断集合是否为空,返回true表示不包含任何元素
  • boolean contains(Object o):判断集合是否包含指定元素,返回 true表示包含该元素
  • boolean containsAll(Collection<?> c):判断集合是否包含指定集合的所有元素,返回true表示包含
  • Iterator iterator():返回此集合中的元素的迭代器
  • Object[] toArray():返回包含此集合中所有元素的数组。(数组和集合之间的桥梁)
  • boolean add(E e):确保此集合包含指定的元素(可选操作)。返回 true表示添加成功
  • boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到这个集合,返回true表示添加成功
  • boolean remove(Object o):从这个集合中移除指定元素的一个实例,返回true表示删除成功
  • boolean removeAll(Collection<?> c):删除此集合中包含的指定集合所有元素,返回true表示删除成功
  • boolean retainAll(Collection<?> c):仅保留包含在指定集合中的这个集合中的元素(可选操作),换句话说,从这个集合中移除所有不包含在指定集合中的元素的所有元素。
  • boolean equals(Object o):将指定的对象与此集合进行比较,以进行相等性

代码示例

/*
    collection 常用功能
 */

import java.util.ArrayList;
import java.util.Collection;

public class Demo1 {
    public static void main(String[] args) {
        //创建一个集合对象collection1
        Collection<Integer> collection1 = new ArrayList<>();
        Collection<Integer> collection2 = new ArrayList<>();

        //collection1添加元素 add
        collection1.add(1);
        collection1.add(2);
        collection1.add(3);
        System.out.println("这是collection1添加元素后:"+ collection1);

        //collection2添加元素 add
        collection1.add(2);
        collection2.add(4);
        collection2.add(5);
        System.out.println("这是collection2添加元素后:"+ collection2);

        //collection1添加collection2 addAll
        collection1.addAll(collection2);
        System.out.println("这是collection1添加collection2集合后:"+ collection1);

        //collection1删除元素 remove
        collection1.remove(1);
        System.out.println("这是collection1删除元素后:"+ collection1);

        //collection1删除collection2集合中相同的元素 removeAll
        collection1.removeAll(collection2);
        System.out.println("这是collection1删除collection2集合中相同的元素后:"+ collection1);

        //判断collection1集合是否为空集合 isEmpty
        boolean empty = collection1.isEmpty();
        System.out.println("collection1集合是否为空:"+empty);

        //判断collection1集合中是否存在一个与obj对象equals相等的元素,存在返回true
        boolean contains = collection1.contains(1);
        System.out.println("collection1集合是否存在1:"+contains);

        //判断collection2集合中的元素是否在collection1集合中都存在
        boolean containsAll = collection1.containsAll(collection2);
        System.out.println("collection2集合中的元素是否在collection1集合中都存在:"+containsAll);

        //获取当前集合的大小 size();
        int size = collection1.size();
        System.out.println("collection1集合的大小:"+size);

        //获取当前集合中所有元素的数组  toArray()
        Object[] objects = collection1.toArray();
        System.out.println("collection1集合对应的数组:"+ objects);

        //获取当前集合中仅保留两个集合的交集 retainAll();
        System.out.println(collection1.removeAll(collection2));;

    }
}

Map

基本介绍

Map与Collection集合类和数组不同,其存储的是具有映射关系或者是键值对的元素。这里的元素指的是两组数据:key和value,它们都可以使任何引用类型的数据,但注意:key不能重复。这样的话就可以通过指定的key就可以取出对应的value。(Map非常重要的特征)。Map接口有四个比较重要的实现类,分别是HashMap、LinkedHashMap、TreeMap和HashTable,它们的区别如下:

  • HashMap:元素是没有顺序的;key值可以为null,但只能有一个key为null;它是线程不安全的;
  • LinkedHashMap:继承自HashMap,它主要是用链表实现来扩展HashMap类,元素是可以有序的;
  • TreeMap:基于红黑树数据结构的实现,键值可以使用Comparable或Comparator接口来排序;SortedMap是Map的子接口,使用它可以确保图中的条目是排好序的
  • HashTable:它也是一个散列表,存储的内容是键值对映射;key和value不可为空;它是线程安全的;

你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)

常用方法

Map接口中对很多常用的方法进行了声明,方便其子接口使用。下面介绍一些常用的方法:

  • int size():返回此集合中的元素的数目
  • boolean isEmpty():判断集合是否为空,返回true表示不包含任何元素
  • boolean containsKey(Object key):判断Map是否包含一个指定的键映射,返回 true表示包含
  • boolean containsValue(Object value):判断是否映射到指定的值的一个或多个键,返回 true表示存在
  • V get(Object key):返回指定的键映射的值,或 null如果这个Map不包含的键映射
  • V put(K key, V value):将指定的值与此映射中的指定键关联。如果映射以前包含一个键的映射,旧值将被指定的值替换
  • void putAll(Map<? extends K,? extends V> m):从指定的映射到这个Map复制所有的映射
  • V remove(Object key):如果存在,则从该Map中移除一个键的映射
  • boolean equals(Object o):将指定的对象与此映射的相等性进行比较。返回 true表示相同的映射
  • int hashCode():返回此映射的哈希代码值
  • default boolean remove(Object key, Object value):仅当它当前映射到指定的值时,为指定的键移除条目
  • default boolean replace(K key,V oldValue, V newValue):仅当当前映射到指定的值时,替换指定的键的条目
  • default V replace(K key, V value):仅当它当前映射到某一值时,替换指定的键的条目。
  • void clear():从这个映射中移除所有的映射。这个调用返回后的Map将是空的

代码示例

/*
    Map中常用的方法
 */

import java.util.HashMap;
import java.util.jar.JarEntry;

public class Demo5 {
    public static void main(String[] args) {
        //创建 map对象
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        HashMap<String, Integer> map2 = new HashMap<String, Integer>();

        //添加元素到集合
        map.put("jack", 80);
        map.put("marry", 99);
        map.put("lucy", 80);
        System.out.println(map);

        map2.put("小明", 80);
        map2.put("marry", 99);
        map2.put("小王", 80);
        System.out.println(map2);

        //返回此集合中的元素的数目
        int size = map.size();
        System.out.println("集合中的数目为:" +size);

        //判断集合是否为空,返回true表示不包含任何元素
        boolean empty = map.isEmpty();
        System.out.println("集合是否为空:" + empty);

        //判断Map是否包含一个指定的键映射,返回 true表示包含
        boolean containsKey = map.containsKey("jack");
        System.out.println("集合中是否包含jack:" + containsKey);

        //判断是否映射到指定的值的一个或多个键
        boolean containsValue = map.containsValue(80);
        System.out.println("集合中是否包含80:" + containsValue);

        //返回指定的键映射的值
        Integer integer = map.get("marry");
        System.out.println("返回marry的值:" + integer);

        //将指定的值与此映射中的指定键关联
        map.put("jack", 100);
        System.out.println(map);

        //从指定的映射到这个Map复制所有的映射
        map.putAll(map2);
        System.out.println(map);

        //从该Map中移除一个键的映射
        System.out.println(map.remove("jack"));
        System.out.println(map);

        //将指定的对象与此映射的相等性进行比较。返回 true表示相同的映射
        boolean equals = map.equals(map2);
        System.out.println(equals);

        //返回此映射的哈希代码值
        int hashCode = map.hashCode();
        System.out.println("此映射的hashCode是:" + hashCode);

        //在该映射中的每个条目执行给定的操作
        Integer replace = map.replace("jack", 110);
        System.out.println(map);

        //当前映射到指定的值时,替换指定的键的条目
        map.replace("jack",110,666);
        System.out.println(map);

        //从这个映射中移除所有的映射
        map.clear();
        System.out.println(map);

    }
}

相关文章

暂无评论

暂无评论...