网站 框架wordpress 换页面
news/
2025/9/26 15:08:46/
文章来源:
网站 框架,wordpress 换页面,网站建设管理的建议,大连百度网站快速优化十一章#xff1a;Java 集合 一、集合框架的概述
1、集合#xff1a;就像一个容器#xff0c;可以动态的把多个对象的引用放入容器中。简称 Java 容器
说明#xff1a;此时的存储#xff0c;主要指的是内存层面的存储#xff0c;不涉及到持续化的存储#xff08;.t…十一章Java 集合 一、集合框架的概述
1、集合就像一个容器可以动态的把多个对象的引用放入容器中。简称 Java 容器
说明此时的存储主要指的是内存层面的存储不涉及到持续化的存储.txt, .jpg, avi数据库中
2、数组在存储多个数据方面的特点
一旦初始化之后长度就确定了
一旦定义好其元素的类型就确定了。我们只能操作指定类型的数据。比如 String[] arr; int[] arr1;
数组在存储多个数据方面的缺点
一旦初始化其长度就不可修改
数组中提供的方法非常有限对于添加、删除、插入数据等操作非常不便效率也不高
获取数据中实际元素个数的需求数据没有线程的属性或方法可用
数组存储数据的特点有序、可重复。对于无序的、不可重复的需求无法满足 二、集合框架Collection 与 Map List ----“动态”数组 Set-----高中讲的“集合” Map----高中函数: yf(x) 可以 key 多对一 value 不可以 key 一对多 value 三、Collection 接口中的 方法的使用 像 Collection 接口的实现类中的对象中添加数据 obj 时要求 obj 所在类要重写 equals package com.java.kcw1;import org.junit.Test;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/**集合元素的遍历操作使用 Iterator* author Jackson_kcw* Time 2025-03-01 PM1:52*/
public class InteratorTest {Testpublic void test1() {Collection coll1new ArrayList();coll1.add(a);coll1.add(b);coll1.add(c);coll1.add(false);Iterator iterator coll1.iterator();
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());//遍历操作while(iterator.hasNext()) {//next() 指针下移将下移以后集合位置上的元素返回System.out.println(iterator.next());}}
} 集合对象每次调用 iterator方法都得到一个全新的迭代器对象默认游标都在集合的第一个元素之前 内部定义了 remove(),可以在遍历的时候删除集合中的元素。此方法不同于直接嗲用 remove For-each
package com.java.kcw1;import org.junit.Test;import java.util.ArrayList;
import java.util.Collection;/**JDK5.0新增 foreach 循环用于* author Jackson_kcw* Time 2025-03-01 PM2:19*/
public class ForTest {Testpublic void test() {Collection collnew ArrayList();coll.add(AA);coll.add(BB);coll.add(11); //自动装箱System.out.println(coll.size());//for( 集合元素的类型 局部变量集合对象)for(Object obj:coll){System.out.println(obj);}}
} List 接口概述List 集合了类元素有序、可重复
面试题目ArrayList\LinkedList\Vector 三者的异同
同三个类都实现了 List 接口存储数据的特点相同元素有序、可重复
异
ArrayList作为 List 接口的主要实现类线程不安全效率高
LinkedList对于频繁的插入和删除操作使用效率比 ArrayList 高底层使用双向链表存储
Vector作为 List 接口的古老实现类线程安全效率低
List 接口中的常用方法 总结常用方法
增add(Object obj)
删remove(int index) / remove(Object obj)
改set(int index,Object ele)
查get(int index)
插add(int index,Object ele)
长度size()
遍历一、Iterator 迭代器方式 二、for each 三、普通的循环 Set接口:存储无序的、不可重复的数据 —高中讲的集合
HashSet: 作为 Set 接口的主要实现类线程不安全可以存储 null 值
LinkedHashSet作为 HashSet 子类遍历其内部数据时可以按照添加的顺序遍历
TreeSet可以按照添加对象的指定属性进行排序
Set 接口没有额外一些方法使用的都是 Collection 里面声明的方法 Set 以 HashSet 为例 1、无序性不等于随机性。存储的数据在底层数组中并非按照数据所以你的顺序添加,而是根据数据的 hash 值来确定的 2、不可重复性保证添加的元素按照 equals方法判断时不能返回 true.即相同的元素只能添加一个 二、添加元素的过程以 HashSet 为例
我们向 HashSet 添加元素 a,首先调用元素a 所在类的 hashCode方法计算 a 的哈希值此哈希值接着通过某种算法计算出在 HashSet 底层数组中的存放完位置即为索引位置判断数组在此位置是否已经有元素
如果此位置上没有其他元素则元素 a 添加成功
如果此位置有元素 b则比较元素 a 与元素 b 的 哈希值
如果 hash 值不同则元素 a 添加成功
如果 hash 值相同贼需要调用元素 a 所在类的 equals方法equals返回 true元素 a 添加失败
equals返回 false则元素 a 添加成功 向 TreeSet 里面添加的数据要求是相同类的对象不能添加不同类的对象 五、Map 接口 5-1、—Map双列数据存储 key-value 的值 ---------类似高中的函数 yf(x)
|—HashMap作为 Map 的主要实现类线程不安全效率高可以存储 null 的 key 和 value
----LinkedHashMap保证在遍历 map 元素时可以按照添加的顺序实现遍历
—TreeMap保证按照添加的 key-value 对 进行排序实现排序遍历。此时考虑 key 的自然排序或定制排序
| —Hashtable:作为古老的实现类线程安全效率低不可存储 null 的 key 和 value
—Properties常用来处理配置文件。key 和 value 都是 String 类型
HashMap 的底层 数组链表jdk7 及之前
数组链表红黑树jdk8 5-2 Map 结构的理解 5-3 HashMap 的底层实现原理
以 jdk7 为例说明
HashMap map new HashMap();
在实例化以后底层创建了长度为 16 的一维数组 Entry[] table
…可能已经执行过多次 put…
map.put(key1,value1):
首先调用 key1 所在类的 hashCode计算 key1 哈希值此哈希值经过某种算法计算以后得到在 Entry 数组中的存放位置
如果此位置上的数据为空此时的 key1-value1 添加成功
如果此位置的数据不为空意味着此位置上存在一个或多个数据以链表形式存在比较 key1 和已经存在的一个或多个数据的哈希值
如果 key1 的哈希值与已经存在的数据的哈希值都不相同此时的 key1-value1 添加成功
如果 key1 的哈希值和已经存在的某一个数据key2-value2的哈希值相同继续比较调用 key1 所在类的 equals方法比较
如果 equals返回 false此时的 key1-value1 添加成功
如果 equals返回 true 使用 value1 替换value2
JDK8 相较于 7 在底层实现方面的不同
1、new HashMap底层没有创建一个长度为 16 的数组
2、jdk8 底层的数组是Node[],而非 Entry[]
3、首次调用 put 方法时底层创建长度为 16 的数组
4、jdk7 底层结构只有数组加链表 jdk8 底层结构数据链表红黑树
当数组的某一个索引位置上的元素以链表形式存在的数据个数8 且当前数组的长度64此时索引位置上的所有数据改为使用红黑树存储 这里面跳过了 hashMap 底层实现原理这一部分讲的比较复杂和抽象本人因为时间原因跳过了但是建议再找文档或视频看看 5-4 Map接口中常用的方法 工具类 Collections:操作 Collection、Map 的工具类 面试题Collections 与 Collection 的区别
对比项CollectionCollections定义Collection 是 java 的接口Collections 是 Java 提供的工具类作用定义了 Java 集合的基本操作如 List、Set等的父接口提供集合操作的工具方法如排序、搜索、线程安全包装等子类/实现方式List\Set\Queue 等结合框架的接口不能被继承只能直接调用其静态方法常见方法add()、remove、size等sort、shuffle、synchronizedList等
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918434.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!