java常用的集合和方法

Java集合HashSet和HashMap常用方法总结 一、HashSet集合的方法 boolean add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。 void clear() 从此 set 中移除所有元素。 Object clone() 返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。 boolean contains(Object ... 阅读详情

1.Collection集合

1.1为什么使用集合

数组在使用时:

​ 1.要定义容器的大小,超了直接报异常

​ 2.数组操作的方法很少,没有专门的封装方法

​ 3.数据类型也比较单一

期望有一个java方式,把之前讲的操作数组的方法封装到一起,供程序员使用。

​ Collection集合【它是一个接口】完成了一系列增删改查的操作

1.2.集合类的结构

Collection java中所有集合的总接口

–|List 是Collection下面的子接口【特征:无序的,不可重复的】

–|--|ArrayList【重点】是可变长的数组容器,它是一个类,它的爷爷是List 它爷爷的爸爸是Collection。

–|--|LinkedList 链表数组

–|--|Vector安全版本的ArrayList

–|Set 也是Collection下面子接口【特征:无序的,不可重复的】

–|--|HashSet 底层是个hash表

–|--|TreeSet底层是二叉树

1.3.Collection常用方法总结
增:
	boolean add(E e)添加指定元素到Collection集合中,采用尾插法
	boolean addAll(Collection<? extends E> c)添加一个集合到另一个集合中
删:
	remove(Object o)删除集合中指定的元素
	removeAll(Collection <?> c)删除两个集合中交集
	retainAll(Collection<?> c)保留两个集合的交集
	clear()清空集合
查:
	int size()获取集合中元素的个数
	Object[] toArray() 返回整个集合中所有元素的Object类型的数组
	boolean contains(Object o)判断指定元素是否在当前集合中
	boolean containsAll(Collection<?> c)判断指定集合是否是当前集合子集合
	boolean isEmpty()

【特别注意】Collection是一个接口,没有实例化对象,应采用多态的思想进行实例化

1.4.Collection下面的迭代器

获取迭代器对象:

​ 通过集合对象获取迭代器

​ Iterator iterator();

常用方法:

​ boolean hasNext()判断是否可继续遍历

​ Object next()获取当前迭代器指向的元素,并且指向下一个元素

​ void remove()删除

2.List集合

2.1.List接口简介

List是Collection的子接口,意味着Collection下面的所有方法,List都是可以使用的,并且还可以有自己的方法

【List特点:有序的可重复的】

2.2.List下常用方法
增:
	add(int index,E e)指定下标添加元素
	addAll(int index,Collection<? extends E> c)在指定下标位置添加另一个集合
删:
	remove(int index)删除指定下标的元素
改:
	E set(int index,E e)依据指定下标,替换指定下标元素
查:
	E get(int index)获取指定下标元素
	int indexOf(Object obj)查找指定元素的下标位置
	int lastIndexOf(Object obj)查找指定元素最后一次出现的位置
	List<E> SubList(int startIndex,int endIndex)获取子List集合
2.3.List接口下迭代器

ListIterator

获取方式:ListIterator listIterator();

常用方法:

​ boolean hasNext();

​ E next();

​ void remove();

​ void add(E e);在迭代器中添加数据。【注意】是根据迭代器的指针指向进行添加的

​ void set(E e);修改当前迭代器指向位置的那个元素

public class Demo2 {
    public static void main(String[] args) {

        List<String>  list = new ArrayList<>();
        list.add("红旗渠");
        list.add("散花");
        list.add("荷花");
        list.add("利群");
        list.add("华子");
        ListIterator<String> it = list.listIterator();
        System.out.println(it.hasNext());//true
        System.out.println(it.next());//红旗渠
        System.out.println(it.nextIndex());//1s下一个的元素的索引
        it.add("牡丹");
        System.out.println(list);
        System.out.println(it.next());//牡丹
        System.out.println(it.next());//散花
        System.out.println(it.next());//h荷花
        it.set("芙蓉王");
        System.out.println(list);
        /*增强for循环*/
        for (String s : list) {
            System.out.println(s);
        }
    }
}

3.ArrayList【重点】

3.1ArrayList简介

调用ArrayList无参构造方法,是没有传容量的。底层是一个数组

​ 底层是数组

​ 初始化值是10,因为在ArrayList中私有化的静态的使用final修饰成员变量

​ private static final int DEFAULT_CAPACITY = 10;

默认的是10,如果添加数据超过了10,进行扩容。让其容量自增1,

ArrayList特征:增删慢,查找快

增加慢:

​ 1、添加数据的时候,可能涉及到数组的扩容,这里涉及使用数组copy问题

​ 2、想要在指定位置添加数据,会导致添加位置及以后的数组元素后移

删除慢:

​ 删除元素后,会有删除位置及以后的元素向前移动

查找快:

​ int [ ] arr = new int[10];

arr是数组的名字,同时也是一个引用数据类型的变量,该变量保存的数据时当前数组在内存中的首地址。cpu通过内存首地址进行查询这个效率是十分高的,ArrayList就是把数组名+索引方式进行访问的,就是变相通过内存首地址进行查询,所以效率高

ArrayList应用场景:

​ 对于数据查询需求比较大,但对数据的增删需求少的,比较适合使用

如:图书馆,人力管理系统…

4.LinkedList

4.1.LinkedList简介

也是实现了接口List,兄弟是ArrayList,以链表的形式进行数据存储

4.2.LinkedList常用的方法
boolean addFirst(E e)在第一个位置添加一个元素
boolean addLast(E e)在最后一个位置添加一个元素
E getFirst()获取第一个元素
E getLast()获取最后一个元素
removeLast()删除最后一个元素
removeFirst()移除第一个元素

5.Object类

Object类是所有类的基类

boolean equals(Object obj);比较两个对象是否相等的方法

根本的比较方式:比较两个内存首地址是否相等,如果相等就返回true,如果不相等就返回false和String里的比较方法是完全不一样的。

toString();返回的是类的字符串表示形式

int hashCode(); 返回对象的hash码值

Object类的hashCode方法返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样 ,所以哈希码也不一样。

【规定】java中规定,如果equals方法比较两个对象的话,如果两个对象相等,就意味着内存地址相等,如果内存地址相等,hash码必须相等

【面试题】重写equals方法,比较两个对象是否相等(主观意愿上的相等,就是内容相等即可,没必要内存地址也相等)

【面试题】

​ String类下==和equals的区别:==是比较内存地址,equals比较的是内容

​ Object类下equals比较的是内存地址(hash码值)

java中有如下规定

​ 两个对象相等,hashCode一定相等

​ 两个对象不等,hashCode不一定不等

​ hashCode相等,两个对象不一定相等

​ hashCode不等,两个对象一定不等

package com.qfedu.a_Object;

public class Person {
    private int id;
    private String name;

    @Override
    public boolean equals(Object obj) {
        /**
         * this是当前的类对象  obj是传入过来的对象
         * 调用当前equals方法,如果传入的对象和当前对象的地址一样,就证明是同一个对象
         * 这是比较严格的比较
         */
        if (this==obj){
            return true;
        }
        /**
         * 如果不是同一个对象,就需要比较对象的数据内容
         * 按照目前的情况,若名字相同,id也相同是一个对象
         * 必须强制类型转换
         */
        Person p = (Person)obj;
        /**
         * id相等  用==比较
         * name是一个字符串,需要用equals进行比较
         */
        return p.id == this.id && p.name.equals(this.name);
    }

    /**
     * 重写hashCode方法,把id当成hash值
     * @return
     */
    @Override
    public int hashCode() {
        return id;
    }

    /**
     * 重写toString() Object下面的方法
     */

    public Person() {
    }

    public Person(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}


package com.qfedu.a_Object;

public class Demo {
    public static void main(String[] args) {
        Person p1 = new Person(1, "红孩儿");
        Person p2 = new Person(1, "红孩儿");

        System.out.println(p1.equals(p2));

        /**
         * 1:这两个对象不是同一个对象。因为是通过new关键字new出来的,所以内存地址不一样
         * 2:这两个对象保存的数据时一样的,从主观意愿上来说是同一个对象
         */
        System.out.println(p1.hashCode());
        System.out.println(p2.hashCode());
    }
}

6.Set集合

6.1.Set简介

Collection下面有两个子接口:

​ List:ArrayList LinkedList Vector 可重复的,有序的

​ Set:不可重复的,无序的

Set接口下面没有独特的方法,可以完全使用Collection下面的方法

–|HashSet底层是一个hash表,存储效率十分高

–|TreeSet底层是一个树状结构,要求保存的数据必须是有顺序的,自然顺序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CW0UgQYR-1627902881225)(C:\Users\22564\AppData\Roaming\Typora\typora-user-images\image-20210405104650206.png)]

【由图像可知】这是不符合规范的,因为Set集合中存的对象确实是两个内存地址不同的对象,但内容确实一致的。

解决方案:1.重写hashCode方法 2.必须重写equals方法 【缺一不可】

6.2.论证关系

1.如果没有重写hashCode和equals方法。只比较hash值是否相等,两个对象两个内存地址,两个hash值,就直接判定是不同的,就可以写进set集合中了

2.如果重写了hashCode方法没有重写equals方法。如果hash值一样,当时物理地址不一样。还是可以存到set集合中的。

3.如果重写了equals方法没有重写hashCode方法,hash值还是不一样的,直接判断hashCode方法,不调用equals方法

4.如果写了hashCode方法和equals方法,不看物理地址,直接比较hash值和内容,如果相等就存一个。

7.Map集合

7.1.Map集合简介

Map和Collection没有关系,Map是双边队列(成双成对)Map(K,V)

(key,value)键是唯一的,一个键只能对应一个数据。值可以是相等的,对应多个键。

a====>1

b====>2

–|HashMap<K,V>底层是一个hash表,存储的就是当前键值对的key(意味着你的键值不能重复)

–|TreeMap<K,V>底层是一个二叉树,比较存储数据的时候,参考也是key值

7.2.Map接口中常用的方法
增:
	put(K key,V value)
	putAll(Map<? extends K,? extends v>)参数是一个对应好的map集合,k和v泛型一定和被存入map集合保持一致
删:
	remove(Object key)通过对应的键值删除value值
改:
	put(K key,V value)若key存在,修改对应的value,如果不存在就添加
查:
	int size()有效键值对的个数
	boolean isEmpty()
	boolean containsKey(Object key)在map集合中是否包含key
	boolean containsValue(Object value)在map集合中是否包含value
	Set<K> keySet()获取当前map集合所有的key存储在set集合中
	Collection<V> values()获取集合中的value值
	V get(Object key)通过键值获取value值
package com.qfedu.a_map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author wangbo
 * @version 1.0
 * @date 2021/3/17 10:01
 */
public class Demo1 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        //map.put("烤羊排", "168");
        map.put("烤羊排", "167");
        map.put("烤鲶鱼", "58");
        map.put("烤乳猪", "589");
        map.put("烤骆驼", "18888");
        System.out.println(map);
        Map<String, String> map1 = new HashMap<>();
        //map.put("烤羊排", "168");
        map1.put("麻辣小龙虾", "167");
        map1.put("佛跳墙", "58");

        System.out.println(map1);
        map.putAll(map1);
        System.out.println(map);
        map.remove("佛跳墙");
        System.out.println(map);
        //修改
        map.put("烤乳猪", "689");
        System.out.println(map);
        //查
        System.out.println(map.size());//5
        System.out.println(map.isEmpty());//false
        System.out.println(map.containsKey("烤羊排"));//true
        System.out.println(map.containsValue("58"));//true

        Set<String> strings = map.keySet();
        //遍历出来键
        for (String string : strings) {
            System.out.println(string);
        }
        Collection<String> values = map.values();
        for (String value : values) {
            System.out.println(value);
        }
        System.out.println(map.get("麻辣小龙虾"));
    }
}
单细胞轨迹分析实战:基于Monocle和CytoTRACE的细胞分化潜能与状态解析 本文提供了基于Monocle和CytoTRACE的单细胞轨迹分析实战指南。通过乳腺癌数据集,详细演示了从数据准备、伪时序分析、细胞分化潜能评估到分支点功能挖掘的全流程。结合两种工具的优势,能有效解析细胞状态动态演变,为发育和疾病研究提供关键见解。 阅读详情

相关推荐

SGM5860x高精度ADC驱动开发与SPI接口实战指南

本文详细介绍了SGM5860x高精度ADC芯片的驱动开发与SPI接口配置实战。内容涵盖芯片特性、SPI通信设置、寄存器映射、驱动初始化、数据采集处理、校准优化及调试技巧,帮助开发者快速掌握国产24位ADC的应用,提升工业测量项目的精度与稳定性。

vvv99的博客 718

java常用的几种集合类以及实现方法

目录集合类图List集合Set集合Map集合 在UML类图中,常见的几种关系:基本的遍历循环方法 ArrayList删除方法

qq_64001795的博客 2365

ISP——坏点矫正(Defective Pixel Correction,DPC)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、出现原因二、坏点分类三、矫正方法动态矫正1.PINTO算法2.梯度法3.DPC和demosaic结合法4.行检测法 一、出现原因 1.感光元件芯片自身工艺技术瑕疵造成以及长期使用造成的瑕疵; 2.光线采集存在缺陷; 二、坏点分类 1.hot pixel: 固定保持较高的像素值,一般呈现为画面高亮的点; 2.dead pixel: 固定保持较低的像素值,一般在画面中呈现为暗点; 3.noise pixel:信号强度随光照呈现的.

qq_41939460的博客 9422

Java集合及常用方法

集合及其常用方法

LRC1062702315的博客 531

PCB过孔电流承载解析:完整指南与数据参考

深入解析PCB过孔的电流承载能力,结合实际应用场景提供可靠设计参考。涵盖影响载流的关键因素,并整理实用的pcb过孔与电流对照一览表,帮助工程师优化布局与布线。

weixin_35677363的博客 632

【数字孪生与仿真技术】05:从原理到实战:MATLAB/Simulink在航空航天GNC系统开发中的深度解析(含全流程代码与认证指南)

摘要:本文系统阐述MATLAB/Simulink在航空航天制导、导航与控制(GNC)系统开发中的核心应用。通过解析GNC系统高保真动力学建模、多源导航传感器融合、鲁棒控制算法设计等关键技术原理,结合Virgin Orbit运载火箭、CubeSat等真实案例,展示从需求分析、模型搭建、仿真验证到代码生成与认证的完整开发流程。文中提供1200余行关键代码、8个可复用Simulink模型及详细执行结果展示,涵盖DO-178C认证支持、实时性能优化等工业级开发规范,为航空航天工程师、科研人员提供可落地的参考方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1657

JAVA中各种集合介绍及常用方法

1. List List集合继承于Collection,public interface List<E> extends Collection<E> 常用的List集合应该是LinkedList以及ArrayList的实现,顾名思义,分别代表链表实现以及数组实现,那么对应的性能方面的区别就是链表和数组的区别 常用方法包括: size():查看list大小 add(E element):添加元素 add(int index, E element):添加元素 addAll(Coll

o707191418的博客 797

无线传感网络的Matlab实现

Matlab是一种功能强大的数值计算和数据分析工具,也可以用于无线传感网络的建模和仿真。根据实际需求,可以进一步扩展和优化模型,例如考虑节点能量消耗、网络路由、数据融合等方面的问题。函数用于绘制节点之间的连接关系,其中第一个参数是邻接矩阵,描述了节点之间的连接关系。这里使用了一个4个节点的简单例子,可以根据实际需求修改节点数量和连接关系。可以使用Matlab中的图形绘制函数来可视化节点的位置和连接关系。在无线传感网络中,节点的能量是一个关键因素。通过计算节点的剩余能量,可以评估节点的能量消耗情况。

2301_79331387的博客 249

java集合整理总结

集合整理总结

yyyyyyttr的博客 987

芒果YOLOv7改进48:主干篇:独家首发改进:目标检测新范式骨干PPHGNetv2改进版,充分融合信息特征,提升YOLOv7检测能力

YOLOv7代码改进实践 | 独家首发改进 PPHGNetv2 改进版结构

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1849

从0玩转Mamba神经网络:理论+实战的保姆级教程

Mamba神经网络是一种基于状态空间模型(SSM)的高效序列处理架构,相比Transformer具有更快的推理速度和更低的内存消耗。本文提供从理论到实践的完整指南,详细讲解Mamba的工作原理、与Transformer的差异,并给出基于PyTorch的文本分类实战示例。教程包含环境配置、数据处理、模型搭建、训练评估全流程,展示了Mamba在IMDb情感分析任务中的应用。文章还探讨了Mamba的性能优势及进阶方向,为开发者提供了探索这一新兴技术的实用指南。通过阅读本文,读者可以快速掌握Mamba的核心概念并上

FJN110的博客 316

Java 集合的一些常用方法

java集合的一些常用方法

qxt2021的博客 2547

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

perseverance51博客 2117

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

Java集合是一组用于存储和操作数据的类和接口。它们提供了一种方便的方式来组织数据,并且可以高效地对其进行检索、排序、过滤等操作。Java集合框架包括List、Set、Map等主要接口,以及ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类。其中,List允许重复元素,Set不允许重复元素,并且保持插入顺序;Map则将键值对关联起来,通过键可以快速查找对应的值。Java集合框架提供了丰富的操作方法,如增删改查、遍历、排序、交集并集等,同时还支持多

weixin_43935152的博客 1498

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java里数组和集合常用的方法介绍

数组:固定大小,适合存储固定数量的元素,操作简单但功能有限。集合:动态大小,提供了丰富的操作方法,适合处理动态数据。根据具体需求选择合适的数据结构,能有效提升代码的效率和可读性。

weixin_46455584的博客 397

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java集合大体结构和常用方法

集合 1.1 集合的意义 集合的特点: 1. 支持所有数据类型的情况下,保持数据类型一致化要求 2. 方法众多,工具方便 3. 数组容量问题有多种解决方式,可以适应多种条件 4. 有多种存储模型,可以根据当前数据的操作需要选择合适的方式 1.2 集合的基本结构 interface Collection<E> Java中所有接口的总接口 1. interface List<E> 特征: 有序: 添加顺序和存储顺序一致 可重复: 在List集合允许出现相同元素

Zhangt_1024的博客 241

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Java】Collection集合接口和常用方法实例解释

## 1.集合的介绍 > 1.集合主要是两组(单列集合,双列集合) > 2.Collection接口有两个重要的子接口List和Set,他们的实现子类都是单列集合 > 3.Map的实现子类是双列集合 ## 2.集合的好处 > 1.可以动态保存任意多个对象,使用比较方便。 > 2.提供了一系列方便的操作对象的方法。 > 3.使用集合添加,删除新元素简单方便 > 1.Collection实现子类可以存放多个元素,每个元素可以是Object。 > 2.Collection的实现类,有些是有序的(List),有

qq_59708493的博客 967

有关Java集合的区别,和常用方法的总结

集合: 在编程中,我们需要管理很多对象集,比如某班全部的同学信息,某个公司的人员资料等等。JAVA集合就是提供某种数据结构的支持,即存放对象,并让这些对象按照某种数据结构存放。 集合与数组的区别: 1. 数组存放的元素个数是在定义数组时固定的。   集合可以通过方法添加、删除元素、 2. 数组存放的类型是统一的。   集合存放的类型可以不统一。 Collection是L...

weixin_30539835的博客 87

java集合工具类Collections和Arrays的常用方法整理

java集合工具类Collections和Arrays的常用方法整理

爱的叹息的专栏 567

Java基础>44>>ArrayList集合的常用方法和遍历

仅供自己记录学习,无它用,欢迎指导! /* ArrayList当中的常用方法有: public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功 备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。 但是对于其他集合(今后学习)来说,add添...

Joker的博客 892

Java 集合框架 Collection的介绍和常用方法,iterator迭代器遍历集合的方法和原理

这个我没学过,每次遇到都有点懵,今天补补课,好记性不如烂博客~ 因为数组存储引用数据类型时有局限性,比如不能自动增长,为了方便封装了一些集合类供使用。 数组与集合的区别 数组可以存储基本数据类型也可以存储引用类型,集合只可以存引用数据类型(对象),但是可以通过JDK1.5自动装箱的特性减少不便。 数组长度是不可变的,集合的长度是可变的,可以随着元素的增加而增长(有的还是通过数组实现的,重新new一个1.5倍的数组,然后把原来数组中的数据存进去,原来的数组变成垃圾,1.5倍增长是一个折中的办法为了避免频繁地

虾米的日常总结 307

JAVA中的Collection集合及ArrayList,LinkedLIst,HashSet,TreeSet和其它实现类的常用方法

集合

2401_83377623的博客 1312

Java集合之List、set和map的常用方法

ArrayList ArrayList 的常用方法 。 .add(); .remove(); //可以是index和Object类型。Object移除第一次出现的指定元素。 .indexOf(“ab”); .lastIndexOf(“a”); .size(); .get(index); .set(index,obj); //修改集合的数值 .contains(Object o) ...

qq_40531768的博客 1290

Java中的集合List、Set和Map三大类以及常用方法

Java中的集合主要分为List、Set和Map三大类,每一类都有多种实现。

一只猫 614

Java集合框架概述和Collection接口常用方法

Java集合框架概述 Java集合也称为容器,可以动态地把多个对象的引用放到容器中 数据存储多个数据的特点: 一旦初始化以后,其长度就确定了 数组一旦定义好,其类型也就确定了,也就只能操作指定类型的数据了,比如String[] arr;int[] arr1 数组存储多个数据的缺点: 一旦初始化后,长度便不可修改 数组中提供的方法有限,效率也不高 获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用 数组存储数据的特点:有序、可重复;对于无序、不可重复的需求,不能满足 Java

insist_to_learn的博客 160

Java集合类体系结构、常用方法和使用场景分析

对List的选择:存储有序、元素重复 ArrayList集合【首选】:基于数组,整体性能更好。LinkedList集合:基于链表,集合中元素可以重复,当增删操作明显多于查询操作时选用。对Set的选择:元素去重 HashSet集合【首选】:基于哈希表,性能基本上特别是添加和查询元素总比TreeSet好。 TreeSet集合:基于红黑树,可以维持元素的排序状态。 LinkedHashSet集合:基于哈希表和双链表,可以

STRANGEX-03的博客 676
上一篇: git指令大全
下一篇: Java架构的演进
Key_finger
博客等级 码龄8年 7粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值