第二次大作业BLOG心得

打印 上一主题 下一主题

主题 528|帖子 528|积分 1584

(1)前言:
知识点:
①ArrayLsit的知识点:
ArrayList 是 Java 中的动态数组实现,它提供了自动调整大小的功能,可以根据需要动态增长或收缩。
ArrayList 可以存储恣意类型的对象,并支持随机访问,即可以通过索引快速访问列表中的元素。
ArrayList 内部通过数组实现,当元素数量超出当前数组容量时,会自动扩展数组大小,通常是原来容量的 1.5 倍。
ArrayList 答应重复元素,而且可以在列表的恣意位置插入和删除元素,但在插入和删除操作时,大概需要移动大量元素,因此性能大概受影响。
ArrayList 是线程不安全的,不适合在多线程环境下使用,如果需要在多线程环境中使用,可以思量使用 java.util.concurrent.CopyOnWriteArrayList。
②hashmap的知识点:
HashMap 是 Java 中的散列映射实现,它存储键值对,并根据键的哈希码来快速查找值。
HashMap 使用哈希表数据布局来存储键值对,当我们将键值对插入到 HashMap 中时,HashMap 会根据键的哈希码来计算出存储位置,并将键值对存储在对应位置的桶中。
HashMap 答应 null 键和 null 值,而且答应重复的值,但不答应重复的键。
HashMap 的性能在大多数情况下黑白常高效的,平均情况下,插入、删除和查找操作的时间复杂度为 O(1),但在最坏情况下大概达到 O(n),这通常发生在哈希冲突较多时。
在 Java 8 之前,HashMap 是不保证元素顺序的,但在 Java 8 中引入了 LinkedHashMap,它保留了元素插入的顺序。
HashMap 黑白线程安全的,如果需要在多线程环境中使用,可以思量使用 java.util.concurrent.ConcurrentHashMap。
③正则表达式的知识点:
正则表达式是一种用来描述字符串匹配规则的工具,它可以用来检查字符串是否符合特定的模式,或者从字符串中提取符合模式的子串。
正则表达式中的基本元字符包括字母、数字和一些特殊字符,比方 . 表现恣意字符,* 表现零个或多个前面的字符等。
正则表达式中的量词可以用来指定模式中字符或子表达式的重复次数,比方 + 表现至少一个,? 表现零个或一个,{n} 表现重复 n 次等。
正则表达式还支持字符类、分组、反向引用、边界匹配等高级功能,这些功能使得它在处置惩罚复杂的字符串匹配和替换使命时非常强大。
在 Java 中,正则表达式主要通过 java.util.regex 包中的类实现,比方 Pattern 和 Matcher。通过这些类,我们可以在 Java 中使用正则表达式来进行字符串匹配和操作。
在这次作业中,我灵活运用以上三个知识点,使得我对Java的了解更加深入,这也是我作业完成的主要帮手
题量:适中
难度:大
(2)设计与分析:
这是我的设计类图

我设计了13个类
我以为最困难的地方是对设备信息的处置惩罚,以下是我对设备信息的处置惩罚的代码

(3)采坑心得:
在这次大作业中,我以为最困难的是精确处置惩罚信息,在我的输出中出现最多的是输出NULL

缘故原由:输出null的缘故原由是未对输入的数据进行精确的处置惩罚
(4)改进建议:
在我的代码中,子类有些重复赘余的部门,比方各设备,因此我通过抽象的方法将他们的重复部门设计于父类中eDevice中,这样不仅简化了代码,而且进步了运行速度,低落了代码之间的耦合度,使得代码可读性更强。
比方:我将子设备的对信息数据的处置惩罚抽象于父类eDevice中
(父类的数据处置惩罚的抽象方法)

(电扇的数据处置惩罚代码)

(灯的数据处置惩罚代码)

(5)总结:
①从hashmap的使用中我学会了怎样高效地对字符串集合的增加,删除,修改的处置惩罚,之前使用链表时,觉得逐一添加很贫困,还需要查找,但是通过hashmap的使用,大大缩减了代码工程量,除此之外,HashMap 相较于列表(如 ArrayList)具有一些显着的优势和洽处,主要包括:
快速查找:
HashMap 使用键值对存储数据,并根据键的哈希码将数据存储在内部的哈希表中。这使得 HashMap 可以或许在常数时间内(O(1))查找特定的键,而不受到列表中元素数量的影响。相比之下,列表的查找速度取决于元素数量,而且通常需要遍历整个列表来查找目标元素,时间复杂度为 O(n)。
动态调整大小:
HashMap 是一种动态数据布局,它会根据需要自动调整内部存储空间的大小。当元素数量增加时,HashMap 会自动扩展内部哈希表的大小,以保持较低的负载因子。这意味着即使存储大量数据,HashMap 也能保持高效的性能。相比之下,列表的大小通常是固定的,而且在插入大量元素时大概需要重新分配内存空间,导致性能下降。
灵活性:
HashMap 可以存储恣意类型的键值对,而且答应键和值都可以为 null。这使得 HashMap 在处置惩罚各种类型的数据时非常灵活。相比之下,列表通常只能存储一种类型的元素。
适用于大数据集合:
由于 HashMap 的查找操作效率高,它特殊适用于大数据集合中的查找和检索操作。在大型数据集合中,使用 HashMap 可以更快地找到所需的数据,而不必遍历整个数据集合。
键值对关系:
HashMap 的存储方式是键值对的形式,这意味着可以更轻易地表现键和值之间的关系。这对于建模实际问题中的映射关系非常有用,比方字典、缓存等。
总的来说,HashMap 在查找效率、动态调整大小、灵活性和适用于大数据集合等方面都比列表更具优势,特殊是在需要快速查找和检索数据的情况下,HashMap 是更好的选择。
在代码关联使用和处置惩罚信息处我需要多花功夫,比方在这次作业对各设备的数据处置惩罚,我无法精确地对数据进行处置惩罚,以至于我无法完成数据的精确输出,在接下来的学习过程中,我会增强对数据的处置惩罚训练
②学会使用正则表达式的好处
模式匹配:正则表达式答应你指定一种模式,用于在文本中匹配符合该模式的字符串。这种匹配方式非常灵活,可以匹配特定的字符、字符串、字符集合、位置等。
文本搜索和替换:使用正则表达式可以进行高效的文本搜索和替换操作。你可以搜索匹配某个模式的字符串,并对其进行替换或其他处置惩罚。
数据提取:通过正则表达式,你可以从文本中提取出符合特定模式的数据。这在数据清洗、提取关键信息等使命中非常有用。
数据验证:正则表达式可以用于验证输入数据的格式是否符合预期。比方,你可以使用正则表达式来验证邮箱地址、电话号码、日期等格式是否精确。
文本处置惩罚:正则表达式可以帮助你对文本进行各种复杂的处置惩罚,如分割字符串、合并字符串、格式化字符串等。
编程语言支持:几乎所有的编程语言都支持正则表达式,因此你可以在各种差别的编程环境中使用它们。
简洁性和可读性:固然正则表达式的语法大概看起来有些晦涩,但一旦你熟悉了它,你会发现它可以用非常简洁和高效的方式来表达复杂的模式,从而使代码更加简洁和可读。
③使用文本读入相较于控制台读入的好处:
灵活性:文本读入可以从多种来源读取数据,不仅限于控制台输入。你可以从文件、网络流、内存中的字符串等读取数据,这使得程序更具灵活性。
批量处置惩罚:文本读入使得批量处置惩罚数据更轻易。你可以一次性读取大量数据,而无需逐个输入或等待用户输入。
数据预处置惩罚:通过文本读入,你可以在读取数据之前对数据进行预处置惩罚,比方去除空白字符、转换数据格式等,从而简化后续的处置惩罚过程。
数据重用:读取的数据可以保存在文件中,以便后续重复使用。这在需要多次运行程序或与其他程序共享数据时非常有用。
自动化:文本读入可以与其他程序自动集成,实现自动化处置惩罚和数据互换,而无需人工干预。
测试:使用文本读入可以更方便地进行单元测试和集成测试,由于你可以事先准备好输入数据,并在测试中重复使用
在这次迭代作业中,我对自己写代码的能力缺失有了很大认识,接下来的暑假我会努力补上自己的算法能力和编程能力,争取在期末取得好成绩和放学期写好Java的课设。
本校的老师工作十分到位,在遇见难题时老师会积极解答,让我学习Java更加有信心。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表