当前位置: 首页 > wzjs >正文

建站行业成为买方市场如何伪原创 网站

建站行业成为买方市场,如何伪原创 网站,推荐一本学做网站的书,网站地图 怎么做Java 的集合体系 Java 的集合框架主要分为两大接口体系:Collection 和 Map。以下是对这两大体系下常见集合类的介绍: Collection 体系 Collection 是单列集合的根接口,它有三个主要的子接口:List、Set 和 Queue。 List 接口&a…

Java 的集合体系

Java 的集合框架主要分为两大接口体系:Collection 和 Map。以下是对这两大体系下常见集合类的介绍:

Collection 体系

Collection 是单列集合的根接口,它有三个主要的子接口:ListSet 和 Queue

  • List 接口:有序、可重复的集合。
    • ArrayList:基于动态数组实现,支持随机访问,查找速度快,但插入和删除操作效率较低。
    • LinkedList:基于双向链表实现,插入和删除操作效率高,但随机访问速度较慢。
    • Vector:线程安全的动态数组,与 ArrayList 类似,但由于使用了同步机制,性能相对较低。
  • Set 接口:无序、不可重复的集合。
    • HashSet:基于哈希表实现,不保证元素的顺序,插入、删除和查找操作的时间复杂度为 O (1)。
    • TreeSet:基于红黑树实现,元素按照自然顺序或指定的比较器顺序排序,插入、删除和查找操作的时间复杂度为 O (log n)。
    • LinkedHashSet:继承自 HashSet,同时使用链表维护元素的插入顺序。
  • Queue 接口:用于模拟队列数据结构,遵循先进先出(FIFO)原则。
    • LinkedList:除了实现 List 接口外,还实现了 Queue 接口,可以作为队列使用。
    • PriorityQueue:基于堆实现的优先队列,元素按照优先级排序,出队操作返回优先级最高的元素。
Map 体系

Map 是双列集合的根接口,用于存储键值对。

  • HashMap:基于哈希表实现,不保证键的顺序,插入、删除和查找操作的时间复杂度为 O (1)。
  • TreeMap:基于红黑树实现,键按照自然顺序或指定的比较器顺序排序,插入、删除和查找操作的时间复杂度为 O (log n)。
  • LinkedHashMap:继承自 HashMap,同时使用链表维护键的插入顺序。
  • Hashtable:线程安全的哈希表,与 HashMap 类似,但由于使用了同步机制,性能相对较低。

ArrayList 和 LinkedList 的区别

对比项ArrayListLinkedList
数据结构基于动态数组实现,数组是连续的内存空间。基于双向链表实现,链表由节点组成,每个节点包含数据和指向前一个节点和后一个节点的引用。
随机访问性能支持随机访问,通过索引可以直接访问数组中的元素,时间复杂度为 O (1)。不支持随机访问,需要从头节点或尾节点开始遍历链表,直到找到指定位置的元素,时间复杂度为 O (n)。
插入和删除性能在数组末尾插入和删除元素的效率较高,时间复杂度为 O (1);但在数组中间或开头插入和删除元素时,需要移动大量元素,时间复杂度为 O (n)。插入和删除元素的效率较高,只需要修改相邻节点的引用,时间复杂度为 O (1);但在指定位置插入和删除元素时,需要先遍历链表找到指定位置,时间复杂度为 O (n)。
内存占用由于数组是连续的内存空间,可能会存在一定的内存浪费,尤其是在数组扩容时。每个节点需要额外的引用字段来指向前一个节点和后一个节点,会占用更多的内存空间。
线程安全性都不是线程安全的集合类。如果需要在多线程环境下使用,可以使用 Collections.synchronizedList() 方法将它们转换为线程安全的集合。
适用场景适用于需要频繁随机访问元素,而插入和删除操作较少的场景。适用于需要频繁插入和删除元素,而随机访问操作较少的场景。

 

数组

数组是一种固定大小的数据结构,用来存储相同类型的元素。

// 创建数组
int[] arr = new int[5];
// 赋值
arr[0] = 1;
// 获取元素
int element = arr[0];
// 获取数组长度
int length = arr.length;

集合框架

1. List

List 是一个有序的集合,允许重复元素。常见的实现类有 ArrayList 和 LinkedList

import java.util.ArrayList;
import java.util.List;// 创建 List
List<String> list = new ArrayList<>();
// 添加元素
list.add("apple");
// 在指定位置添加元素
list.add(1, "banana");
// 获取元素
String fruit = list.get(0);
// 获取元素位置
int index = list.indexOf("apple");
// 删除元素
list.remove(0);
// 获取列表大小
int size = list.size();
2. Set

Set 是一个不允许重复元素的集合。常见的实现类有 HashSetTreeSet

import java.util.HashSet;
import java.util.Set;// 创建 Set
Set<String> set = new HashSet<>();
// 添加元素
set.add("apple");
// 判断元素是否存在
boolean contains = set.contains("apple");
// 删除元素
set.remove("apple");
// 获取集合大小
int size = set.size();
3. Map

Map 存储键值对,键是唯一的。常见的实现类有 HashMapTreeMap

import java.util.HashMap;
import java.util.Map;// 创建 Map
Map<String, Integer> map = new HashMap<>();
// 添加键值对
map.put("apple", 1);
// 获取值
Integer value = map.get("apple");
// 判断键是否存在
boolean containsKey = map.containsKey("apple");
// 删除键值对
map.remove("apple");
// 获取键值对数量
int size = map.size();

栈和队列

1. 栈(Stack

栈是一种后进先出(LIFO)的数据结构。

import java.util.Stack;// 创建栈
Stack<Integer> stack = new Stack<>();
// 入栈
stack.push(1);
// 出栈
int top = stack.pop();
// 查看栈顶元素
int peek = stack.peek();
// 判断栈是否为空
boolean empty = stack.isEmpty();
2. 队列(Queue

队列是一种先进先出(FIFO)的数据结构。常见的实现类有 LinkedList

import java.util.LinkedList;
import java.util.Queue;// 创建队列
Queue<Integer> queue = new LinkedList<>();
// 入队
queue.offer(1);
// 出队
int front = queue.poll();
// 查看队首元素
int peek = queue.peek();
// 判断队列是否为空
boolean empty = queue.isEmpty();

优先级队列(PriorityQueue

PriorityQueue 是一个基于优先级堆的无界优先级队列。

import java.util.PriorityQueue;// 创建优先级队列
PriorityQueue<Integer> pq = new PriorityQueue<>();
// 添加元素
pq.offer(3);
// 获取并移除队首元素
int min = pq.poll();
// 查看队首元素
int peek = pq.peek();
// 判断队列是否为空
boolean empty = pq.isEmpty();

这些就是 Java 中常见数据结构的常用方法,掌握它们能让你在实际编程中更高效地使用不同的数据结构。

MVC 与 MVVM 对比表格

对比项MVCMVVM
架构组成由 Model(处理数据和业务逻辑)、View(负责界面展示与交互)、Controller(连接 Model 和 View)构成。在 Android 里,Activity 常充当 Controller。由 Model(处理数据和业务逻辑)、View(负责界面展示与交互)、ViewModel(核心,解耦 View 和 Model,实现数据绑定)构成。
数据流向数据流向复杂,多向交互。用户操作从 View 到 Controller,Controller 调用 Model 处理数据,再更新 View,View 也可直接从 Model 获取数据。数据流向清晰,存在单向或双向数据流。ViewModel 通过数据绑定更新 View,View 变化反馈给 ViewModel 再到 Model。
耦合度View 和 Controller 耦合度高,Activity 代码臃肿,包含大量视图操作和业务逻辑,View 和 Model 也存在一定耦合。通过 ViewModel 实现 View 和 Model 解耦,View 仅关注展示,Model 专注数据处理,降低代码耦合。
可测试性因 View 和 Controller 耦合高,单元测试 Controller 时需模拟 View 行为,测试难度大,View 中业务逻辑也使测试复杂。ViewModel 与 View 解耦,单元测试 ViewModel 时可方便模拟 Model 数据和行为,不依赖 View,测试效率和准确性高。
适用场景适用于小型项目或对架构要求不高的项目,结构简单,易理解实现,利于项目初期快速搭建框架。适合大型项目或对代码可维护性、可测试性要求高的项目,能提高开发效率,降低维护成本,适合使用数据绑定技术的场景。

总结语句

MVC 和 MVVM 作为两种常见的软件设计模式,都旨在分离视图和业务逻辑。MVC 结构简单但耦合度高、数据流向复杂,在小型项目搭建上有优势;而 MVVM 通过 ViewModel 实现解耦,数据流向清晰,可测试性强,更契合大型项目及对代码质量要求高的开发场景。在实际开发中,需依据项目规模、复杂度和团队技术水平等因素合理选用。

http://www.dtcms.com/wzjs/563108.html

相关文章:

  • 三站合一 网站建设广州专业做标书公司
  • 中山网站建设文化价格西安seo工作室
  • 网站做推广有用吗ppt那个网站做的好
  • 动易网站官网项目管理师
  • 建设营销型网站服务有什么免费ppt模板网站
  • 小说网站模板建站品牌vi包括什么
  • 手机报价大全2021中关村如何对网站做引擎优化
  • 上海800做网站网络布局设计
  • 电子商务网站建设报价表最好看的网站设计
  • 网站模板如何制作凡客和凡客诚品一样吗
  • 欧美网站欣赏无锡前洲行业网站建设
  • 网站地图 xml html免费设计网站素材
  • 网站建设科技有限公司微信小程序怎么解绑
  • 公司网站高端网站建设东莞最新一例阳性
  • 做南美生意做什么网站好怎么查找网站后台
  • 企业培训网站建设网站seo外包
  • dede网站建设步骤优秀设计作品网站
  • 苏州建设职业培训中心网站已有域名怎么建设网站
  • wordpress异步刷新seo广告平台
  • 网站建设教的误区dede手机医院网站模板
  • 徐州开发区中学网站seo中心
  • 网站建设模版 优帮云苏州企业建设网站
  • 陵水县建设局网站做网站会遇到的问题
  • 安阳做网站的地方江西响应式网站建设哪家好
  • 廊坊网站建设设计网页排版设计的基本形式
  • 泰安毕业生档案查询做网站优化费用
  • 海外搜索引擎网站建设如何建设红色旅游网站
  • 用rp怎么做网站功能按钮免费建站模板
  • 广告设计网站排行榜前十名济南知名网站建设平台
  • 常州 网站建设成都做一个小企业网站需要多少钱