陕西网站备案流程裁剪图网站

张小明 2026/1/10 17:39:56
陕西网站备案流程,裁剪图网站,WordPress404,网站做动态还是静态一、集合框架 1.1 集合概述 集合#xff1a;广义上的集合简单理解就是容器。需要注意的是#xff0c;集合只能存放对象类型的数据。 所以如果你要存放基本数据类型的数据是不能直接存储的#xff0c;需要转化成包装类#xff0c;包装类详见常见类库#xff08;下#…一、集合框架1.1 集合概述集合广义上的集合简单理解就是容器。需要注意的是集合只能存放对象类型的数据。所以如果你要存放基本数据类型的数据是不能直接存储的需要转化成包装类包装类详见常见类库下。1.2 集合框架集合框架是Java中非常重要的技术体系在日常开发中无处不在。集合框架指的是java.util包中定义的各种容器类、相关的工具类、接口的统称。不同的容器存储不同结构的数据。使用时要进行导包操作。具体集合的框架的体系图如下其中Iterator是根部的父接口总结来说接口一共分为两大类三小类分别是Collection和MapListSet和Map。具体特性如上图所示以下无序是指在逻辑上的有无序List是有序可重复的集合实现类有ArrayListLinkedListSet是无序不可重复的集合实现类有HashSetTreeSetLinkedHashSetMap里面存放的是无序的具有映射关系的键值对实现类有HashMapLinkedHashMapTreeMap。二、Collection接口2.1 Collection接口概述具体Collection接口的类结构见1.2中的图所示实际上其中TreeSet上面是有一个父类SortedSet的后面的某一个点会有要提到的地方。在常见类库上中我们我们有提到了解一个类可以从它的定位也就是作用和它的构造器以及它的成员来学习同样接触到了一个新的接口我们先看一下它的结构。Collection接口继承了Iterator在Iterator接口中规定了实现类必须要提供迭代器对象在Java中使用迭代器去遍历集合中的元素这是一种新的遍历方法在学习此之前都是循环遍历。Collection作为Iterable接口的子接口意味着Collection接口的实现类一定会实现Iterable接口中规定的方法List、Set接口的实现类也一定会实现Iterable接口中规定的方法。2.2 Collection接口的方法因为它是一个接口所以其中定义的大多都是抽象方法是没有方法体的。详细的方法如下//获取集合中元素的个数。 int size() //向集合中添加元素添加后如果容器内容发生了变化返回true否则返回false。 //有些容器不允许重复元素。 boolean add(E e) //将指定集合中的元素添加到当前集合中添加后如果容器内容发生了变化返回true否则返回false。 booleanaddAll(Collection ? extends E c) //从集合中删除指定的元素删除后如果容器内容发生了变化返回true否则返回false。 boolean remove(Obiect 0) //删除指定集合中包含的全部元素删除后如果容器内容发生了变化返回true否则返回false。 boolean removeAl(Collection?c) //删除集合中全部元素。 void clear() //判断集合中是否包含指定的元素。 boolean contains(Object0) //判断集合中是否包含指定集合中全部元素。 boolean containsAll(Collection? c) //获取集合对应的迭代器。(迭代器可以遍历集合) IteratorEiterator() //判断是不是空集合 boolean isEmpty() //将集合转换成对象数组。 Object[] toArray()因为List接口和Set接口继承了该接口所以这些方法在这些接口及其实现类中也是可以调用的如果没有涉及到改动在下面的讲述中就只总结新遇到的方法。三、List接口3.1 List接口概述List 是一个“有顺序、可重复”的集合像排队一样每个元素都有固定位置索引所以这个有序指的是逻辑是否有序。因为存在下标所以List可以利用下表去做一些不同的事也就是它定义了自己的一些关于下标的方法。3.2 List接口的方法//在集合指定的位置添加元素。 void add(int index,E e) //在集合中指定的位置添加一组元素 void addAll(int index, Collection?extends E c) //获取集合中指定位置的元素。 E get(int index) //获取对象第一次出现在集合中的下标。如果没有这个对象返回-1。 int indexOf(Object o) //获取对象最后一次出现在集合中的下标。如果没有返回-1。 int lastindexOf(Object o) //删除指定下标的元素返回值是被删除的元素。 E remove(int index) //将指定位置的元素修改成e返回值是此位置原来的元素。 E set(int index, E e) //获取子列表。不含toIndex对应的元素 List E subList(int fromIndex, int tolndex)3.3 List接口的实现类因为讲的是集合集合是要存放数据的关于数据就要涉及到增删改查这方面是重点所以下面我们重点介绍一下相关的增删改查的一些方法。3.3.1 ArraysList实现类ArraysList实现类的底层逻辑是数组有关数组的逻辑在这里就不再多讲了吧如果对数组的内存有疑问也可以去查看我之前的文章。同时这个数组存放又和我们之前的数组有些不同ArrayList是长度可变的数组长度不足时会自动扩充容量。由于底层是靠数组完成的数据存取所以查询效率高根据index查询增删效率低。具体逻辑因为数组有下标根据索引可以很快地找到对应的数据但是又因为数组结构在存放上是物理有序的所以当我们需要增删时我们需要随之对后续的数据都要进行前移或后挪所以查询效率高根据index查询增删效率低。3.3.1.1 构造器//创建一个初始容量为10的空列表。 ArrayList() //创建一个列表包含参数中全部的元素顺序与参数中元素的顺序一致。 ArrayList(Collection? extends E c) //创建一个指定容量的空列表。 ArrayList(int capacity)3.3.1.2 增删改查1增//向ArrayList中添加一个元素元素会添加到ArrayList的末尾。如果添加成功返回true boolean add(E e) //在指定位置插入元素。 void add(int index, E e) //将指定集合中的数据按顺序添加到ArrayList的末尾。 boolean addAll(Collection? extends E c) //将指定集合中的数据插入到ArrayList的指定的位置。 boolean addAll(int index, Collection? extends E c)2删//从列表中删除指定的元素如果有多个只会删除第一个。如果成功删除返回true如果没有删除返回false。 boolean remove(Object o) //删除指定位置的元素。返回值是被删除的元素。 E remove(int index) //从列表中删除指定集合中包含的元素。如果列表删除了数据返回true否则返回false。 boolean removeAll(Collection? extends E c) //清空列表中的元素 void clear()3改E set(int index, E e) //将指定下标的元素修改为e4查是否包含此元素//判断列表中是否包含指定的元素如果包含返回true否则返回false。 boolean contains(Object o)获取指定下标的元素E get(int index) //获取指定下标处的元素。根据元素获取下表//返回列表中指定元素第一次出现的下标。如果没有指定元素返回-1 int indexOf(Object o) //返回列表中指定元素最后一次出现的下标。如果没有指定元素返回-1 int lastIndexOf(Object o)获取列表中元素的个数int size() //获取列表中元素的个数3.3.1.3 ArraysList的遍历作为数组的存储方式ArraysListu也可以使用普通for循环进行遍历。通过普通for循环遍历for(int i 0; i arrayList.size(); i){ arrayList.get(i); }加强for循环for(数据类型 对象 : arrayList){ 对象;//对象就是遍历出来的数据 }迭代器循环//调用iterator方法返回的值赋给新建的Iterator对象使用该对象调用对应的方法进行迭代器循环 Iterator数据类型 it arrayList.iterator(); while(it.hasNext()){ 数据类型 对象 it.next(); }3.3.2 LinkedList实现类LinkedList底层是靠双向链表来存放元素的。链表中的元素在逻辑上连续但物理上不连续。因此LinkedList增、删效率高增删元素无需做任何移动直接改变链表的指向即可。但根据下标查找元素效率低。3.3.2.1 构造器//创建一个空列表。 LinkedList() //创建一个列表包含参数中全部的元素顺序与参数中元素的顺序一致。 LinkedList(Collection? extends E c)3.3.2.2 增删改查因为都是有下标的集合所以在增删改查方面和ArraysList基本相同由于内容较多在此就不再多赘述详细查看3.3.1.2 。3.3.2.3 LinkedList的遍历通过普通for循环遍历for(int i 0; i LinkedList.size(); i){ LinkedList.get(i); }加强for循环for(数据类型 对象 : LinkedList){ 对象;//对象就是遍历出来的数据 }迭代器循环//调用iterator方法返回的值赋给新建的Iterator对象使用该对象调用对应的方法进行迭代器循环 Iterator数据类型 it LinkedList.iterator(); while(it.hasNext()){ 数据类型 对象 it.next(); }四、Set接口4.1 Set接口概述Set接口规定了无序无下标元素不可重复的容器应该具有什么功能。既然是不含重复元素的集合那它就具有排除重复元素的能力。所以我们在进行Set接口的总结时也要加上它相关的去重原理。4.2 Set接口的方法Set接口中并没有声明多少独特的方法而是声明了和父接口相同的方法。所以具体的方法和Collection接口也就是父接口中的相同再次也不过多赘述详情请见2.2内容4.3 Set接口的实现类4.3.1 HashSet实现类HashSet实现类中存储的数据是不重复的元素的顺序也是无序的。底层数据结构是哈希表。在学习这一块时我问过AI它给了我一个比较形象的例子说它就像是你要往一面墙上贴照片墙上的每个位置都有一个自己的编码哈希码当来了一个照片数据就会根据它的内容找到生成一个位置哈希码然后贴上去。如果墙上的那个位置已经存在照片就说明已经贴过了这就是一种查重。4.3.1.1 HashSet的构造器//创建一个空集合集合的初始容量是16加载因子是0.75 HashSet() //创建一个包含指定元素的集合会去除重。加载因子是0.75 HashSet(Collection? extends E c) //创建一个指定初始容量的空集合。加载因子是0.75 HashSet(int capacity) //创建一个空集合指定初始容量和加载因子。 HashSet(int capacity, float loadFactor)4.3.1.2 HashSet的方法1增//向集合中添加一个元素,如果添加成功返回true boolean add(E e) //将指定集合中的数据添加到HashSet中会去重。 boolean addAll(Collection? extends E c)2删//从集合中删除指定的元素如果成功删除返回true如果没有删除返回false例如没有指定的元素。 boolean remove(Object o) //从HashSet中删除指定集合中包含的元素。如果删除了数据返回true否则返回false。 boolean removeAll(Collection? extends E c) //清空集合中的元素 void clear()3改因为HashSet没有下标且是无序的所以无法进行修改数据所谓的修改是通过for循环或者迭代器进行的一种删除数据再添加的操作。4查//判断集合中是否包含某元素 boolean contains(Object o) //获取集合中元素的个数。 int size()4.3.1.3 HashSet的去重机制我们可以先将List集合转化成Set集合再转换回来就可以达到去重的目的。1先判断对象的hashCode是否一样如果hashCode不同认为是不同的元素。如果hashCode相同进入下面的判断。2.判断equals方法返回值是true还是false如果是false认为是不同的元素如果是true认为是元素重复。不再添加进集合。3hashCode可以通过重写根类Object的hashCode()方法来返回一个hashCode值。但是当我们new两个对象但是他们的内容完全相同对于代码而言他们就是不同的因为内存地址不同但是从逻辑上来看他们就是完全重复的内容。这时候我们可以通过重写对应类里的hashCode和equals方法来达到根据我们的条件去重的目的。4.3.1.4 HashSet的遍历因为没有下表所以无法使用普通for循环来进行遍历加强for循环for(数据类型 对象 : HashSet){ 对象;//对象就是遍历出来的数据 }迭代器循环//调用iterator方法返回的值赋给新建的Iterator对象使用该对象调用对应的方法进行迭代器循环 Iterator数据类型 it HashSet.iterator(); while(it.hasNext()){ 数据类型 对象 it.next(); }4.3.2 LinkedHashSet实现类LinkedHashSet是HashSet的子类它具有和HashSet同样的功能元素也是不能重复唯一不同的是LinkedHashSet会维持元素加入的顺序。LinkedHashSet和LinkedList一样底层数据结构是双向链表哈希表。4.3.2.1 LinkedHashSet的构造器//创建一个空集合集合的初始容量是16加载因子是0.75 LinkedHashSet() //创建一个包含指定元素的集合会去除重。加载因子是0.75 LinkedHashSet(Collection? extends E c) //创建一个指定初始容量的空集合。加载因子是0.75 LinkedHashSet(int capacity) //创建一个空集合指定初始容量和加载因子。 LinkedHashSet(int capacity, int loadFactor)4.3.2.2 LinkedHashSet的方法因为LinkedHashSet是HashSet的子类所以详情见4.3.1.24.3.2.3 LinkedHashSet的遍历见HashSet的遍历4.3.1.44.3.3 TreeSet实现类TreeSet使用的是二叉树存储元素, 通过中序遍历的方式来遍历(检索)元素二叉树的遍历有3种方式先序遍历中序遍历和后序遍历。无论是否哪种遍历方式.都是从树根开始查看的 。先序:先父节点,再左,最后右ABDECFG中序:先左,再父,最后右DBEAFCG后序:先左,再右,最后父DEBFGCATreeSet实现类会有一个默认的排序第一个进入的值在根位置之后进来的元素都会和第一个元素进行比较比根小就在左边比根大就在右边。4.3.3.1 TreeSet的构造器//创建一个空集合根据内部元素的自然顺序排序。 TreeSet() //创建一个包含指定元素的集合根据内部元素的自然顺序排序。 TreeSet(Collection? extends E c) //创建一个空集合。根据指定的比较器进行排序。 TreeSet(Comparator? super E comparator) //创建一个与参数一样的集合按参数的顺序组织元素顺序。 TreeSet(SortedSetE s)4.3.3.2 TreeSet的方法基本和HashSet的方法相同在这里我举几个独有的方法吧//获取集合倒序的迭代器对象 Iterator E descendingIterator() //获取集合第一个元素 E first() //获取结合最后一个元素 E last() //获取从from到to的元素。 SortedSet E subSet(E from, E to)4.3.3.3 TreeSet的去重方法去重和内容有序的原理: 第一个加入set的元素, 会成为树的根, 从第二个元素开始, 要和set中已有的元素比较大小, 如果要添加的元素 大于了已有元素,放在元素右侧, 如果小于了已有元素, 放左侧, 如果要添加的元素和已有元素相等, 会认为重复, 不进行添加 。4.3.3.4 TreeSet的遍历因为也是没有下标所以在遍历方面也基本和HashSet相同唯独多了一个倒序迭代器如下。IteratorString it set.descendingIterator(); while(it.hasNext()) { String str it.next(); System.out.println(str); }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

整站seo优化一般多少钱上海电子通科技网站建设

游戏模组管理革命:XXMI启动器智能化配置全解析 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 还在为多游戏模组配置而烦恼吗?XXMI启动器作为一站式游戏模…

张小明 2026/1/7 8:01:25 网站建设

用js做的网站页面怎么让网站分享有图片

1.4 实战项目:打造你的第一个AI编程项目管理工具 理论学习之后,是时候动手实践了!在本节课中,我们将运用前面学到的知识,使用AI编程工具从零开始构建一个简单的项目管理工具。这不仅是一次技术实践,更是对你AI编程能力的初次检验。 项目概述 我们将创建一个基于Web的简…

张小明 2026/1/7 22:36:15 网站建设

代做论文 软件指导去哪些网站用py做网站

Windows用户福音:WSL2下安装PyTorch-CUDA完整流程 在深度学习日益普及的今天,越来越多开发者希望在自己的Windows笔记本或台式机上快速搭建一个能跑模型、支持GPU加速的AI开发环境。然而现实往往令人头疼:Conda环境冲突、CUDA版本不匹配、cu…

张小明 2026/1/7 20:16:35 网站建设

山东教育网站开发公司电商网站制作成手机app

云原生部署完全指南:从零到生产的7个关键步骤 【免费下载链接】docusaurus Easy to maintain open source documentation websites. 项目地址: https://gitcode.com/gh_mirrors/do/docusaurus 在当今云计算时代,云原生部署已经成为现代应用开发的…

张小明 2026/1/7 6:12:58 网站建设

空间数据云网站凤凰军事网新闻最新消息

第一章:量子编程效率翻倍的底层逻辑量子计算的核心优势在于其并行处理能力,源于叠加态与纠缠态的物理特性。传统二进制位只能表示0或1,而量子比特(qubit)可同时处于0和1的叠加状态。这一特性使得量子程序在执行某些算法…

张小明 2026/1/7 4:11:59 网站建设