[Java基础] 集合框架
往期回顾
[Java基础] 基本数据类型
[Java基础] 运算符
[Java基础] 流程控制
[Java基础] 面向对象编程
[Java基础] 集合框架
[Java基础] 输入输出流
[Java基础] 异常处理机制
[Java基础] Lambda 表达式
目录
List 接口
数据结构
最佳实践
实战代码
Set 接口
数据结构
最佳实践
实战代码
Queue 接口
数据结构
最佳实践
实战代码
Map 接口
数据结构
最佳实践
实战代码
Deque 接口
数据结构
最佳实践
实战代码
最佳实践总结
常见面试题
什么是Java集合框架?
Java集合框架的主要接口有哪些?
ArrayList 和 LinkedList 的区别是什么?
HashMap 和 TreeMap 的区别是什么?
HashSet 和 TreeSet 的区别是什么?
如何实现线程安全的集合?
ArrayList 和 Vector 的区别是什么?
HashMap 的工作原理是什么?
HashSet 的工作原理是什么?
TreeMap 和 TreeSet 的内部实现是什么?
PriorityQueue 的工作原理是什么?
如何遍历一个集合?
什么是泛型?为什么使用泛型?
List 和 Set 的主要区别是什么?
Queue 和 Deque 的主要区别是什么?
Java集合框架(Java Collections Framework, JCF)是Java中用于处理数据集合的一套标准接口和类。它提供了多种数据结构和算法,使得开发者可以高效地管理和操作数据。以下是Java集合框架的主要组成部分及其对应的数据结构、最佳实践和实战代码示例。
List 接口
数据结构
- ArrayList:基于动态数组实现,适合随机访问,插入和删除效率较低。
- LinkedList:基于双向链表实现,适合频繁的插入和删除操作。
- Vector:类似于
ArrayList
,但线程安全(方法级别synchronized),性能较低。
最佳实践
- 随机访问:如果需要频繁进行随机访问操作,建议使用
ArrayList
。 - 插入和删除:如果需要频繁进行插入和删除操作,建议使用
LinkedList
。 - 线程安全:在多线程环境中,如果需要线程安全的
List
,建议使用Vector
或Collections.synchronizedList
。 - 初始化容量:创建
ArrayList
时,如果已知元素数量,可以指定初始容量以减少扩容次数,提高性能。
实战代码
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;public class ListExample {public static void main(String[] args) {// ArrayList 示例List<String> arrayList = new ArrayList<>(10); // 初始化容量arrayList.add("Apple");arrayList.add("Banana");System.out.println("ArrayList: " + arrayList);// LinkedList 示例List<String> linkedList = new LinkedList<>();linkedList.add("Carrot");linkedList.add("Date");System.out.println("LinkedList: " + linkedList);// Vector 示例List<String> vector = new Vector<>();vector.add("Eggplant");vector.add("Fig");System.out.println("Vector: " + vector);// 遍历for (String fruit : arrayList) {System.out.println(fruit);}// 插入和删除linkedList.add(0, "Grape");linkedList.remove("Carrot");System.out.println("Updated LinkedList: " + linkedList);}
}
Set 接口
数据结构
- HashSet:基于哈希表实现,提供快速的查找速度,不保证元素的顺序。
- TreeSet:基于红黑树实现,保持元素的自然排序或定制排序。
- LinkedHashSet:基于哈希表和链表实现,保持元素的插入顺序。
最佳实践
- 唯一性:如果需要确保元素的唯一性,建议使用
Set
。 - 排序:如果需要保持元素的自然排序,建议使用
TreeSet
。 - 插入顺序:如果需要保持元素的插入顺序,建议使用
LinkedHashSet
。
实战代码
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;public class SetExample {public static void main(String[] args) {// HashSet 示例Set<String> hashSet = new HashSet<>();hashSet.add("Apple");hashSet.add("Banana");hashSet.add("Apple"); // 重复元素不会被添加System.out.println("HashSet: " + hashSet);// TreeSet 示例Set<String> treeSet = new TreeSet<>();treeSet.add("Carrot");treeSet.add("Date");treeSet.add("Apple");System.out.println("TreeSet: " + treeSet); // 自然排序// LinkedHashSet 示例Set<String> linkedHashSet = new LinkedHashSet<>();linkedHashSet.add("Eggplant");linkedHashSet.add("Fig");linkedHashSet.add("Grape");System.out.println("LinkedHashSet: " + linkedHashSet); // 插入顺序}
}
Queue 接口
数据结构
- LinkedList:可以作为队列使用。
- PriorityQueue:基于优先级堆实现,元素按优先级排序。
- ArrayDeque:基于循环数组实现,性能优于
LinkedList
。
最佳实践
- FIFO:如果需要实现先进先出(FIFO)的行为,建议使用
LinkedList
或ArrayDeque
。 - 优先级:如果需要按优先级处理元素,建议使用
PriorityQueue
。
实战代码
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;public class QueueExample {public static void main(String[] args) {// LinkedList 作为队列Queue<String> queue = new LinkedList<>();queue.offer("Apple");queue.offer("Banana");System.out.println("Queue (LinkedList): " + queue);System.out.println("Dequeue: " + queue.poll());System.out.println("Queue after dequeue: " + queue);// PriorityQueue 示例Queue<String> priorityQueue = new PriorityQueue<>();priorityQueue.offer("Carrot");priorityQueue.offer("Apple");priorityQueue.offer("Date");System.out.println("PriorityQueue: " + priorityQueue);System.out.println("Dequeue: " + priorityQueue.poll());System.out.println("PriorityQueue after dequeue: " + priorityQueue);}
}
Map 接口
数据结构
- HashMap:基于哈希表实现,线程不安全。
- TreeMap:基于红黑树实现,保持键的自然排序或定制排序。
- LinkedHashMap:基于哈希表和链表实现,保持键值对的插入顺序。
- Hashtable:线程安全,性能稍差。
- ConcurrentHashMap:线程安全,性能较好。
最佳实践
- 线程安全:在多线程环境中,建议使用
ConcurrentHashMap
。 - 排序:如果需要保持键的排序,建议使用
TreeMap
。 - 插入顺序:如果需要保持键值对的插入顺序,建议使用
LinkedHashMap
。 - 线程安全的Map:如果需要线程安全的
Map
,可以使用Hashtable
或Collections.synchronizedMap
或ConcurrentHashMap
。
实战代码
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;public class MapExample {public static void main(String[] args) {// HashMap 示例Map<String, Integer> hashMap = new HashMap<>();hashMap.put("Apple", 1);hashMap.put("Banana", 2);System.out.println("HashMap: " + hashMap);// TreeMap 示例Map<String, Integer> treeMap = new TreeMap<>();treeMap.put("Carrot", 3);treeMap.put("Apple", 1);treeMap.put("Date", 2);System.out.println("TreeMap: " + treeMap); // 自然排序// LinkedHashMap 示例Map<String, Integer> linkedHashMap = new LinkedHashMap<>();linkedHashMap.put("Eggplant", 4);linkedHashMap.put("Fig", 5);linkedHashMap.put("Grape", 6);System.out.println("LinkedHashMap: " + linkedHashMap); // 插入顺序}
}
Deque 接口
数据结构
- ArrayDeque:基于循环数组实现。
- LinkedList:可以作为双端队列使用。
最佳实践
- 双端操作:如果需要从两端进行插入和删除操作,建议使用
Deque
。 - 性能:
ArrayDeque
的性能通常优于LinkedList
。
实战代码
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;public class DequeExample {public static void main(String[] args) {// ArrayDeque 示例Deque<String> deque = new ArrayDeque<>();deque.offerFirst("Apple");deque.offerLast("Banana");System.out.println("Deque (ArrayDeque): " + deque);System.out.println("Poll First: " + deque.pollFirst());System.out.println("Deque after poll first: " + deque);// LinkedList 作为双端队列Deque<String> linkedDeque = new LinkedList<>();linkedDeque.offerFirst("Carrot");linkedDeque.offerLast("Date");System.out.println("Deque (LinkedList): " + linkedDeque);System.out.println("Poll Last: " + linkedDeque.pollLast());System.out.println("Deque after poll last: " + linkedDeque);}
}
最佳实践总结
- 选择合适的集合类型:根据具体需求选择最合适的集合类型,例如需要保持元素唯一性时选择
Set
。 - 初始化集合大小:对于
ArrayList
和HashMap
等,如果已知元素数量,初始化时指定容量可以提高性能。 - 使用泛型:使用泛型定义集合类型,避免运行时类型错误。
- 使用迭代器:在遍历集合时使用迭代器,特别是在需要修改集合时。
- 清理不再使用的对象:及时从集合中移除不再需要的对象,帮助垃圾回收。
- 同步考虑:在多线程环境中使用线程安全的集合,如
ConcurrentHashMap
。 - 利用集合工具类:使用
Collections
类提供的静态方法来操作集合,简化代码。
常见面试题
Java集合框架是面试中经常涉及的话题,以下是常见的面试题及其答案,帮助你更好地准备面试。
什么是Java集合框架?
- 答案:Java集合框架是一组用于表示和操作集合的标准接口和类。它提供了多种数据结构(如列表、集合、映射等)和算法,使得开发者可以高效地管理和操作数据。
Java集合框架的主要接口有哪些?
- 答案:
List
:有序集合,允许重复元素。Set
:无序集合,不允许重复元素。Map
:键值对集合,键唯一,值可以重复。Queue
:队列,支持先进先出(FIFO)行为。Deque
:双端队列,支持从两端进行插入和删除操作。
ArrayList
和 LinkedList
的区别是什么?
- 答案:
- 存储结构:
ArrayList
:基于动态数组实现,适合随机访问,插入和删除效率较低。LinkedList
:基于双向链表实现,适合频繁的插入和删除操作,随机访问效率较低。
- 线程安全:
ArrayList
:线程不安全。LinkedList
:线程不安全。
- 性能:
ArrayList
:随机访问快,插入和删除慢。LinkedList
:插入和删除快,随机访问慢。
- 存储结构:
HashMap
和 TreeMap
的区别是什么?
- 答案:
- 存储结构:
HashMap
:基于哈希表实现,线程不安全,提供快速的查找速度,不保证元素的顺序。TreeMap
:基于红黑树实现,保持键的自然排序或定制排序,性能略低于HashMap
。
- 线程安全:
HashMap
:线程不安全。TreeMap
:线程不安全。
- 性能:
HashMap
:平均时间复杂度为O(1),适用于快速查找。TreeMap
:时间复杂度为O(log n),适用于需要排序的场景。
- 存储结构:
HashSet
和 TreeSet
的区别是什么?
- 答案:
- 存储结构:
HashSet
:基于哈希表实现,提供快速的查找速度,不保证元素的顺序。TreeSet
:基于红黑树实现,保持元素的自然排序或定制排序。
- 线程安全:
HashSet
:线程不安全。TreeSet
:线程不安全。
- 性能:
HashSet
:平均时间复杂度为O(1),适用于快速查找。TreeSet
:时间复杂度为O(log n),适用于需要排序的场景。
- 存储结构:
如何实现线程安全的集合?
- 答案:
- 使用线程安全的集合类,如
Vector
、Hashtable
、ConcurrentHashMap
。 - 使用
Collections
类提供的同步包装器方法,如Collections.synchronizedList
、Collections.synchronizedMap
。
- 使用线程安全的集合类,如
ArrayList
和 Vector
的区别是什么?
- 答案:
- 线程安全:
ArrayList
:线程不安全。Vector
:线程安全,性能较低。
- 性能:
ArrayList
:性能较高,适合单线程环境。Vector
:性能较低,适合多线程环境。
- 扩容机制:
ArrayList
:默认扩容1.5倍。Vector
:默认扩容2倍。
- 线程安全:
HashMap
的工作原理是什么?
- 答案:
HashMap
内部使用一个数组来存储键值对。- 当插入或查找元素时,首先计算键的哈希码,然后通过哈希码确定数组的索引位置。
- 如果发生哈希冲突(多个键的哈希码相同),则使用链地址法(链表或红黑树)来解决冲突。
- 在Java 8及以后的版本中,当链表长度超过一定阈值(默认为8)时,链表会转换为红黑树,以提高查找效率。
HashSet
的工作原理是什么?
- 答案:
HashSet
内部使用HashMap
来实现。HashSet
中的每个元素都作为一个键存储在HashMap
中,值部分总是使用一个固定的对象(通常是PRESENT
)。- 由于
HashMap
提供了高效的查找和插入操作,HashSet
也具有类似的性能特性。
TreeMap
和 TreeSet
的内部实现是什么?
- 答案:
TreeMap
和TreeSet
都基于红黑树实现。- 红黑树是一种自平衡二叉搜索树,能够在O(log n)时间内完成插入、删除和查找操作。
TreeMap
保持键的自然排序或定制排序,TreeSet
保持元素的自然排序或定制排序。
PriorityQueue
的工作原理是什么?
- 答案:
PriorityQueue
是一个基于优先堆的无界优先队列。- 元素按照其自然顺序或通过提供的
Comparator
进行排序。 - 插入和删除操作的时间复杂度为O(log n),获取头部元素的时间复杂度为O(1)。
如何遍历一个集合?
- 答案:
- 使用
for-each
循环。 - 使用
Iterator
。 - 使用
Stream
API(Java 8及以上版本)。
- 使用
什么是泛型?为什么使用泛型?
- 答案:
- 泛型是在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。
- 使用泛型可以避免运行时类型错误,提高代码的可读性和安全性。
List
和 Set
的主要区别是什么?
- 答案:
List
:有序集合,允许重复元素,可以通过索引访问元素。Set
:无序集合,不允许重复元素。
Queue
和 Deque
的主要区别是什么?
- 答案:
Queue
:队列,支持先进先出(FIFO)行为。Deque
:双端队列,支持从两端进行插入和删除操作。
相关文章:
[Java基础] 集合框架
往期回顾 [Java基础] 基本数据类型 [Java基础] 运算符 [Java基础] 流程控制 [Java基础] 面向对象编程 [Java基础] 集合框架 [Java基础] 输入输出流 [Java基础] 异常处理机制 [Java基础] Lambda 表达式 目录 List 接口 数据结构 最佳实践 实战代码 Set 接口 数据…...
机器学习基础:算法如何让 AI 自我学习
大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…...
25届字节跳动 抖音NLP算法工程师 面经
目录 一面/技术面 2024/08/30二面/技术面 2024/09/13 一面/技术面 2024/08/30 深挖实习(最近的一段实习)深挖论文(让我共享屏幕,然后对着自己的论文讲)论文做了多久完成的?主要都做了哪些工作?…...
转行网络工程师以后的就业前景如何?
就业前景如何本质上取决于你在这行业的发展状况,而发展状况又主要由你的技术水平和与人交流的能力所决定。 如果你的技术能力仅限于"安服仔"、"脚本小子"等入门级水平,那你的职业发展可能会像浮萍一样漂泊不定。但如果你能轻松编写…...
docker 和 containerd 关系
containerd 是一个开源的容器运行时,它是用来管理容器生命周期的守护进程。containerd 支持 Docker 和其他容器格式,并且是许多现代容器编排系统(如 Kubernetes)的基础组件之一。 containerd 提供了一个命令行工具 ctr࿰…...
算法-二叉树的最大路径和
为了找到二叉树的最大路径和,我们需要考虑所有可能的路径,包括不经过根节点的路径,所以其实如果你从整体上来一条路径一条路径的遍历,太复杂,我们可以换个思路,从每个节点出发,就把那个节点当成…...
解决url含%导致404错误
String imageUrl;// 使用WebClient下载图片WebClient webClient WebClientUtil.getWebClient();Mono<ByteArrayOutputStream> byteArrayOutputStreamMono webClient.get().uri(imageUrl).retrieve().bodyToFlux(DataBuffer.class) // 获取图片内容的DataBuffer流.reduc…...
[Linux Codec驱动]音频路由概念
1. 音频路由的基本概念 源(Source):音频信号的发出方,通常是一个音频输入设备,如麦克风、音频播放设备等。接收端(Sink):音频信号的接收方,通常是音频输出设备ÿ…...
母线槽温度监测的哪个部位?安科瑞母线槽测温解决方案-安科瑞黄安南
安科瑞生产厂家:黄安南 壹捌柒/陆壹伍/零陆贰叁柒 母线槽简单来说充当着电缆的角色只不过它是大电流的输送设备,一般是铜排或者绿排做导体,用非烯性绝缘材料做支撑,搭配金属外壳。相对于电缆来说母线槽的载流能力强、电能损耗低、…...
《深度学习》—— 模型的部署
文章目录 一、部署方式二、部署步骤三、注意事项 深度学习中模型的部署是将训练好的模型应用到实际场景中的过程,以下是对深度学习模型部署的详细解析: 一、部署方式 嵌入式设备部署:将深度学习模型部署到嵌入式设备中,如智能手机…...
多IP访问浏览器
添加多个ip地址 nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.61.100/24 ipv4.addresses 192.168.61.200/24 ipv4.addresses 192.168.61.128 ipv4.gateway 192.168.61.2 ipv4.dns 114.114.114.114...
1024程序员节福利放送 | AI 照片修复魔法,一键重拾旧时记忆
程序员充电礼包 今天是 1024 程序员节,小贝特意为大家准备了重磅福利!新用户使用邀请码「1024」注册 http://OpenBayes.com,即可获得 20 小时单卡 A6000 的免费使用时长,价值 80 元,资源 1 个月有效。仅限今日…...
OSPF特殊区域及其他特性
不用的链路这状态信息没必要一直保存,要不路由器承受不了。用OSPF 特殊区域解决 1. Stub区域和Totally Stub区域 R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA。 当把Area 2配置为Stub区域后:…...
动态量化:大模型在端侧CPU快速推理方案
作为一款高性能的推理引擎框架,MNN高度关注Transformer模型在移动端的部署并持续探索优化大模型在端侧的推理方案。本文介绍权重量化的模型在MNN CPU后端的推理方案:动态量化。动态量化指在运行时对浮点型feature map数据进行8bit量化,然后与…...
什么是零拷贝以及其应用场景是什么?
写在前面 本文看下什么是零拷贝,以及其具体的应用场景有哪些。 1:什么是零拷贝 想要解释清楚什么是零拷贝,需要先来看下常规的阻塞io一次io的过程,这里以从文件读取内容然后写到socket为例来看下,如下: …...
开源(open source)是什么?为什么要开源?
为什么开源这个问题挺复杂,这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。 社会面开源 这里举一个例子,既互联网从 web1.0 到 web3.0 (开源 → 闭源 → 再开源)的历程&#…...
基于Spring Boot的论坛网站:从零到部署
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
vue开发的一个小插件vue.js devtools
可打开谷歌商城的情况下,不可打开的可以到极简插件里面去下载 极简插件官网_Chrome插件下载_Chrome浏览器应用商店 搜索vue即可...
GraphLLM:基于图的框架,通过大型语言模型处理数据
GraphLLM是一个创新的框架,它允许用户通过一个或多个大型语言模型(LLM)来处理数据。这个框架不仅提供了一个强大的代理,能够执行网络搜索和运行Python代码,还提供了一套工具来抓取网页数据,并将其重新格式化…...
HarmonyOS 5.0应用开发——Navigation实现页面路由
【高心星出品】 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面(stack)、分栏(split)和自适应(a…...
物联网行业应用实训室建设方案
一、建设背景 随着物联网技术的迅猛发展和广泛应用,物联网产业已跃升为新时代的经济增长引擎,对于产业升级和社会信息化水平的提升具有举足轻重的地位。因此,为了满足这一领域的迫切需求,培养具备物联网技术应用能力的优秀人才成…...
SOLIDWORKS 2025更灵活零件建模
SOLIDWORKS 2025更灵活零件建模 北京众联亿诚是达索官方授权的SOLIDWORKS经销商,专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在工程设计领域,SOLIDWORKS作为一款功能强大的三维CAD软件,一直以其优越的性能…...
智能巡检机器人的大模型训练
随着工业自动化和智能化进程的不断加快,智能巡检机器人已成为维护和管理复杂设备的重要工具。在电力、石油化工、煤矿、数据中心等行业中,智能巡检机器人通过自主巡检、故障检测等功能,提高了设备管理的效率和安全性。大模型训练在智能巡检机…...
RabbitMQ系列学习笔记(九)--路由模式
文章目录 一、路由模式原理二、多重绑定三、路由模式实战1、消费者代码2、生产者代码3、运行结果分析 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、路由模式原理 使用发布订阅模式时&#x…...
[OS] pthreads-1
线程的基本概念 线程是进程中的一个单一的执行流。一个进程可以包含多个线程,这些线程共享进程中的资源,并且在相同的地址空间中执行。多线程是提高应用程序并行性的流行方法。例如,在浏览器中,不同的标签页可以视作独立的线程。…...
ThreeJS入门(137):THREE.StringKeyframeTrack 知识详解,示例代码
作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas…...
用大模型或者向量模型比如huggingface上的模型,处理一批图片,对该图片进行分类,检索
要使用大模型或向量模型对图片进行分类和检索,通常可以采用以下几种方法: 1. **图像分类**:使用预训练的图像分类模型(如ResNet、EfficientNet等)对图片进行分类。 2. **图像特征提取**:使用预训练的模型(如CLIP、ResNet等)提取图像的特征向量,然后进行相似度检索。 …...
Mac 使用 zsh 终端提示 zsh: killed 的问题
我的脚本的内容为: #!/bin/bashset -epids$(ps -ef | grep consul | grep -v grep | awk {print $2})for pid in $pids; doecho "kill process: $pid"kill -9 $pid donecd $(dirname $0)nohup ./consul agent -dev > nohup.log &可以看到这是一个…...
数字后端零基础入门系列 | Innovus零基础LAB学习Day6
今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制(包含setup和hold计算公式)。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…...
(Linux驱动学习 -13).SPI驱动实验
目录 一.SPI驱动相关结构体与函数 1.struct spi_master 结构体 2.申请 spi_master - spi_alloc_master 3.释放 spi_master - spi_master_put 4.向内核注册 spi_master - spi_register_master 5.注销掉 spi_master 6.struct spi_driver 结构体 7.向内核注册 spi_driver -…...
营口电商平台网站建设/游戏特效培训机构排名
https://baike.baidu.com/item/缓冲罐/8492136?fraladdin https://baike.baidu.com/item/膨胀罐/6788517 https://baike.baidu.com/item/压力膨胀罐/8436569?fraladdin...
宝马itms做课网站/深圳百度国际大厦
模板 求一棵树上的最长上升子序列的长度 解法 线段树合并 我们对于树上每一个点 xxx,发现经过它的一条路径LIS由两部分组成。 以 xxx 开头的左子树最长上升子序列 右子树最长下降子序列 - 1 以 xxx 开头的左子树最长下降子序列 右子树最长上升子序列 - 1 一开始…...
高端网站建设设计公司有哪些/百度的合作网站有哪些
例子一 var obj {n:1};(function(x){ console.log(x.n); // 1 x.n3; var obj {n:2}; // 内部声明的变量不会影响外面的obj对象 console.log(obj.n) // 2})(obj); // 传入的是一个指针(值), x是obj指针的副本, 两者都指向同一个对象console.log(obj.n); //3 例子二…...
网站空间到期怎么办/网络优化工程师工资
July ● 2019纳思达Hello 大家好,感谢大家长久以来对纳思达集团的信任与支持。七月第三周要闻为您呈现以下精彩内容:手机NFC功能完美匹配奔图M7100DW打印机手机文件传到电脑再打印很麻烦?不如试试奔图M7100DW打印机,手机NFC功能轻…...
公众号开发是前端还是后端/北京seo结算
实验内容: 测试典型运算符的使用。将程序补充完整。获取实数的整数部分,并求出实数与整数部分的差。输入摄氏温度,计算华氏温度并输出。输入圆柱体的高和半径,求其体积。输入一个梯形的上底、下底、高&#x…...
复制网站模板/网络营销学什么内容
http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#1732 深入Java核心Java内存分配原理精讲 url:http://xwood.iteye.com/blog/762286 Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及…...