IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 集合与背后的逻辑框架 -> 正文阅读

[数据结构与算法]集合与背后的逻辑框架

Collection

Collection 接口,在 Java 当中,Collection 也是重要的数据结构。

Collection 创建

在创建 Collection 的时候,要通过 new 关键字来使用。但是查看 Collection 源码的时候,发现 Collecting 是一个接口:
在这里插入图片描述
因为接口是不能实例化的,所以 new 的时候,要用一个具体的类。这里用数组来举例:

Collection collection = new ArrayList();

Collection 使用不加泛型

当 Collection 使用的时候,如果不加泛型,那么这里什么都可以放:字符串、整形、字节都可以放。代码如下:

public static void main(String[] args) {
    Collection collection = new ArrayList();
    collection.add("Hello");
    collection.add(1);
}

这里就是通过 add 方法来添加元素。但是这样的话,什么类型都能添加,就会导致很杂乱。所以就可以使用泛型来规定添加的元素。

Collection 使用泛型

使用泛型就是加上 <> 里面写元素类型,要注意的是,这里的类型全是包装类。字符串的包装类是:String 整形的包装类是:Integer 。写了包装类的话,add 的时候就只能添加这一类型:

public static void main(String[] args) {
    Collection<String> collection = new ArrayList<String>();
    collection.add("hello");
    collection.add("word");
    System.out.println(collection);
}

Collection 后面的 String 可以不写,因为不写的话,编译器会通过前面的 String 来推导出相应的类型。如果这里 add 非字符类型的话,就会报错。运行结果如下:
在这里插入图片描述

Collection 方法

Collection 里面有很多自带的方法:
在这里插入图片描述
使用代码测试:

public static void main(String[] args) {
    Collection<String> collection = new ArrayList<>();
    collection.add("hello");
    collection.add("word");
    System.out.println(collection);
    System.out.println(collection.size());
    System.out.println(collection.isEmpty());
    collection.remove("word");
    System.out.println(collection);
    Object[] objects = collection.toArray();
    System.out.println(Arrays.toString(objects));
    System.out.println(objects);
}

运行结果如下:
在这里插入图片描述

Map 接口

Map 是在 util 包下的接口。Map 有两个参数 <key,val> ,而且这两个参数必须是字符串。实现 Map 的方法 有哈希Map 和 TreeMap 一般用 哈希Map 。Map 的基本功能如下:
在这里插入图片描述

这里用 哈希Map 来举例:

public static void main(String[] args) {
    Map<String,String> map = new HashMap<>();
    map.put("Lockey","鲁班锁");
    map.put("及时雨","宋江");
    String ret = map.get("及时雨");
    String tmp = map.getOrDefault("及时雨1","FM850");
    System.out.println(ret);
    boolean flag = map.containsKey("Lockey");
    System.out.println(flag);
}

用 get 通过 “及时雨” ,来拿到后面的一个参数。 getOrDefault 就是:如果没找到第一个元素的话,就返回后面的 FM850 。运行结果如下:
在这里插入图片描述

Map 的存储结构

Map 在存储的时候,并不是顺序存储的,而是通过映射去存储的。代码示例:

public static void main(String[] args) {
    Map<String,String> map = new HashMap<>();
    map.put("及时雨","宋江");
    map.put("Lockey","鲁班锁");
    System.out.println(map);
}

输出如下:
在这里插入图片描述
先输出 “Lockey” 然后才是 “及时雨” 。

哈希Map 和 TreeMap 的有序与无序

哈希Map 在存储的时候是按照顺序存储的,而 TreeMap 在放入的时候并没有进行比较,没有排序。代码示例如下:

public static void main(String[] args) {
    Map<Integer,String> map = new HashMap<>();
    map.put(10,"宋江");
    map.put(3,"鲁班锁");
    System.out.println(map);
    Map<String,String> map2 = new HashMap<>();
    map2.put("efg","宋江");
    map2.put("abc","鲁班锁");
    System.out.println(map2);
    Map<String,String> map3 = new TreeMap<>();
    map3.put("及时雨","宋江");
    map3.put("国民女神","鲁班锁");
    System.out.println(map3);
    Map<String,String> map4 = new HashMap<>();
    map4.put("及时雨","宋江");
    map4.put("国民女神","鲁班锁");
    System.out.println(map4);
}

运行结果如下:
在这里插入图片描述
哈希Map 在放入数据的时候会进行排序,而 TreeMap 就不会进行排序。

二级目录

三级目录

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:10:13  更:2022-01-28 12:10:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:58:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码