2025年修改原数组(怎么修改数组中的元素)

修改原数组(怎么修改数组中的元素)一 集合 1 集合和数组的区别 数组长度是固定的 集合长度是可变的 数组中可以窜出基本数据类型 集合只能存储对象 数组中存储数据类型是单一的 集合中可以存储任意类型的对象 2 集合框架体系 List 有序存储 可重复 ArrayList 数组实现 查找块 增删慢 LinkedList 链表实现 增删块 查找慢 Vector 和 ArrayList 原理相同 但线程安全

大家好,我是讯享网,很高兴认识大家。



java 集合中修改元素的方式_System
讯享网

java 集合中修改元素的方式_System_02

List:有序存储,可重复
——ArrayList:数组实现,查找块,增删慢
——LinkedList:链表实现,增删块,查找慢
——Vector:和ArrayList原理相同,但线程安全,效率略低
Set:无存储顺序,不可重复
——HashSet:按Hash算法存储集合中的元素,有很好的存取和查找性能,不同步
——LinkedHashSet:根据元素的hashCode决定元素存储位置,同时使用链表维护元素的次序,按照元素添加顺序访问集合元素
——TreeSet:采用红黑树的数据结构存储集合元素,根据元素实际值的大小进行排序
——EnumSet:以枚举值在Enum类内的定义顺序决定集合元素的顺序,在内部以位向量的形式存储
3.总结,什么时候该使用什么样的集合
List:我们需要存储顺序,并且保留重复元素;如果查询较多,使用ArrayList;如果存取较多,使用LinkedList;如果需要线程安全,使用Vector
Set:不需要保留存储顺序,并且需要去掉重复元素;如果需要将元素排序,使用TreeSet;如果不需要排序,使用HashSet,HashSet比TreeSet效率高;如果需要保留存储顺序,又要过滤重复元素,使用LinkedHashSet

注意:以上代码时对增加、删除、修改、判断和获取等方法的示例,实际运行时需要注释掉部分代码。

2.List
判断两个对象相等,只要通过equals方法比较返回true即可
如下代码,仅以增加作为示例

3.ArrayList:数组实现,查找快,增删慢
数组的内存空间地址是连续的,ArrayList底层维护了一个Object[]用于存储对象,默认数组长度是10,可以通过new ArrayList(20)显式指定用于存储对象的数组的长度。数组可以直接按索引查找,所以较快;在增删时会牵扯到数组增容以及拷贝元素,所以慢。
Eg:去除ArrayList集合中重复元素
注意:自定义对象要进行复写toString和equals方法,因为Object是Person的父类,Object中toString返回的是哈希值,equals比较的是对象的地址值
原理:循环遍历该集合,每取出一个放置在行的集合中,放置之前先判断新集合是否已经包含了新的元素

4.LinkedList:链表实现,增删块,查找慢

练习:使用集合模拟队列(先进先出)或者堆栈(后进先出)数据结构,以堆栈为例

5.Vector:描述的是一个线程安全的ArrayList

6.Set:用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复
如果想要两个不同的Person对象视为相等的,必须覆盖Object继承下来的hashCode方法和equals方法。
判断两个元素相等的标准是,两个对象通过equals方法比较相等且hashCode返回值也相等。

总结概括起来就是:元素的哈希值是通过元素的hashcode方法 来获取的, HashSet首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals方法 如果 equls结果为true ,HashSet就视为同一个元素。如果equals 为false就不是同一个元素。

8.LinkedHashSet
HashSet的一个子类,根据元素的hashCode来决定元素的存储位置,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。也就是说,当遍历LinkedHashSet集合里的元素时,LinkedHashSet会按元素的添加顺序来访问集合里的元素。
LinkedHashSet需要维护元素的插入顺序,因此性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能,因为它以链表来维护内部顺序。

9.TreeSet:采用红黑树的数据结构存储集合元素,根据元素实际值的大小进行排序

(2)定制排序,当元素自身不具备比较性,或者元素吱声比较性不是所需的时候,使用定制排序。定义一个类实现Comparator接口,覆盖compare方法,并将该接口的子类对象作为参数传递给TreeSet集合的构造函数。由于Comparator是一个函数式接口,因此可以用Lambda表达式代替Comparator对象。

小练习:将字符串中的数值进行排序,可以使用TreeSet完成,因为TreeSet自身具备排序功能。

三,迭代器
为了方便处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素,例如删除和获取集合中的元素,该对象就叫做迭代器(Iterator)。
1.Iterable
jdk1.5之后添加的新接口,Collection的父接口,实现了Iterable的类就是可迭代的,并支持增强for循环。该接口只有一个方法即获取迭代器的方法iterable(),可以获取每个容器自身的迭代器Iterator。
2.Iterator
Iterator主要用于遍历(即迭代访问)Collection集合中的元素,该接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的同一编程接口,Iterator接口定义了如下4个方法:
boolean hasNext(): 如果被迭代的集合元素还没有被遍历完,返回true
Object next(): 返回集合里的下一个元素
void remove(): 删除集合里上一次next方法返回的元素
void forEachRemaining(Consumer action): java8为Iterator新增的默认方法,该方法可使用Lambda表达式遍历集合元素
3.迭代器遍历的几个例子

while循环遍历集合

利用for循环遍历集合

使用迭代器清空集合,注意两个细节:
(1)如果迭代器的指针已经指向了集合的末尾,那么如果再调用next()会返回NoSuchElementException异常
(2)如果调用remove之前没有调用next是不合法的,会抛出IllegalStateException异常,remove方法会返回上次调用next方法时返回的元素,如果想要删除指定位置上的元素,需要越过这个元素,例如,下面是如何删除字符串集合中第一个元素的方法

如果想要删除两个相邻的元素,不能直接这样

相反的,必须先调用next越过将要删除的元素

java 集合中修改元素的方式_java_03

集合未完……

小讯
上一篇 2025-05-14 17:23
下一篇 2025-06-02 08:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/156242.html