Java —— 初识集合

Java —— 初识集合

在这里插入图片描述


每博一文案

我们一生可能会遇到一个人,一路相遇,相知相爱,却注定不能相守,
可即使没有结果,也足够我们从中汲取力量,奔赴下一场山海了。
正如村上春树的这句话,我告诉你,我喜欢你,并不是一定要和你在一起,
只是希望今后的你,在遭遇人生低谷的时候,不要灰心,至少曾经有人被
你的魅力所吸引,曾经是,以后也会是,我们会遇见很多人,也会付出
很多真心,然后再错过很多事情。最终才能慢慢长大。
我们什么都没忘,但是有些事只适合收藏,所以不要因为失去而纠结,因为
离散而惆怅,不是所有的故事都一定要走向圆满。
我的世界,你来过就好。
                              ——————  一禅心灵庙语



集合

集合及其背后的数据结构

在Java当中,Java把很多的数据结构全部封装起来了

在使用到的时候,需要知道其底层原理


集合的体系结构

在这里插入图片描述


  • 使用成熟的集合框架,有助于我们便捷,快速的写出高效,稳定的代码
  • 学习背后的数据结构知识,有助于我们理解各个集合的优缺点以及使用场景
  • Collection 用来存储管理一组对象,这些对象一般被成为元素 elements
  • Set :元素不能重复,背后隐含着查找/搜素的语义,SortedSet 一组有序的不能重复的元素
  • Map : 键值对:key-value-pair 背后隐含着查找/搜素的语义,SoredMap 一组有序的键值对
  • 当类实现了或者继承了 Iterable接口就可以利用foreach

在这里插入图片描述


Collection 接口

Collectionn 接口是单列集合的最上层接口,该接口提供了很多常用的抽象方法,如下表:

方法名返回类型方法描述
add(E e)boolean向集合中添加指定元素
clear( )void删除集合中的所有元素
isEmpty( )boolean判断集合是否为空
remove(Object o )boolean删除集合中的指定元素
size( )int返回集合中实际元素数量
toArray( )object[ ]返回一个装有所有集合中元素的数组

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

public class Blog13 {
    /**
     * Collection 中的 ArrayList上的使用
     */

    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();   // 实例化创建一个有关于 ArrayList类的方法,父接口引用子类
        collection.add("你好");   // 向集合中添加指定元素
        collection.add("世界");
        System.out.println(collection);  // 打印顺序表
        collection.clear();       // 删除所有元素
        System.out.println(collection);  // 打印顺序表
        collection.add("hello");
        collection.add("world");
        System.out.println(collection.isEmpty());    // 判断该顺序表是否为空
        collection.remove("hello");     // 删除指定元素
        System.out.println(collection);
        System.out.println(collection.size());    // 计算该顺序表中的元素个数
        collection.add("你好世界");
        Object[] objects = collection.toArray();
        System.out.println(Arrays.toString(objects));

        for (String s: collection) {   // 当类实现或者继承了Iterable 接口就可以使用 foreach
            System.out.println(s);
        }

    }
}

在这里插入图片描述


Map接口

Collection 接口下的集合不同,Map 接口属于双列集合,Map 接口下的集合存放的都是 ”键值对“ 。”键值对“是放入集合中的元素是一组映射信息,例如,学生名字和学生学号是一组对应的映射信息:张三—> 20001,李四—> 20003 。在这个键值对中,学生名字学号互相匹配,其中学生名字称为键(key), 学生学号称为值(key) ,组合到一起称之为键值对,可以通过键得到映射的值,其中键和值都可以是任意的引用数据类型。

Map 接口中常用方法如下:

方法名返回类型方法描述
get(Object key)V根据指定的键(K)得到对应的值(V)
gerOrDefault(Object k, V defaultvalue)V根据指定的键(K)查找对应的值(V) 没有找到用默认值代替
put(K key ,V value)V放入指定的键,指定的值
containsKey(Object key)boolean判断是否包含某个键(K)
containsValue(Object value)boolean判断是否包含某个值(V)
set<Map.Entry<K,V>> entryset( )Set<Map.Entry<K,V>>将所有键值对返回
isEmpty( )boolean判断是否为空
size( )int返回键值对的数量

import java.util.*;

public class Blog13 {
    /**
     * Map 中的 HashMap类
     */
    public static void main(String[] args) {
        Map<String, String>map=new HashMap<>();   // 实例化对象,父接口引用子类 HashMap
        map.put("国名女神","蒙娜丽莎");  // 添加键值对
        map.put("国名老公","王思余");
        map.put("及时雨","宋江");
        System.out.println(map);  // 打印键值对
        String s = map.get("及时雨");  // 通过键得到值
        System.out.println(s);
        String s2 = map.getOrDefault("战神","吕布");  // 根据指定的键(K战神)查找对应的值(V吕布) 没有找到用默认值代替
        System.out.println(s2);
        System.out.println(map.containsKey("及时雨"));   // 判断是否包含某个键(K及时雨)
        System.out.println(map.containsValue("宋江"));  // 判断是否包含某个值(K宋江)
        map.put("及时雨","你好");   // 出现重复的再次赋值,旧的键值对会被覆盖掉
        System.out.println(map);
        System.out.println(map.size());  //判断键值对的数量
        System.out.println(map.isEmpty());   // 判断是否为空键值对
        
        Set<Map.Entry<String,String> >Set = map.entrySet();
        for (Map.Entry<String,String> entry:Set) {
            System.out.println(entry.getKey()+"==>"+entry.getValue());
        }
        
    }

在这里插入图片描述


实现的class

Interface顺序表链表红黑树哈希表
SetTreeSetHashSet
ListArrayListLinkedList
QueueLinkedListPriorityQueue
DequeLinkedList
MapTreeMapHashMap

最后:

限于自身水平,其中存在的错误,希望大家给予指教,韩星点兵——多多益善,谢谢大家,后会有期,江湖再见!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值