本周主要对各种集合进行系统复习与巩固,除此之外又对网络编程知识做了一些了解,然后又做了几道力扣算法题,发现自已真的是一坨,就连简单题都需要看题解才能看懂,更不用说后面的中等与困难题了。下面是这一周的学习回顾:
集合List:
LinkedList和ArrayList是Java中常用的两种List集合实现类,它们在内部实现和性能特征上有一些区别:
1.内部实现
ArrayList基于数组实现,它可以动态增长和收缩数组的大小来存储元素。
LinkedList基于双向链表实现,每个元素都包含对前一个和后一个元素的引用。
2.随机访问
ArrayList支持快速的随机访问,因为它可以通过索引直接访问数组中的元素。
LinkedList的随机访问性能比较差,因为它需要从头或尾开始遍历链表才能找到对应位置的元素。
3.插入与删除
ArrayList插入或删除元素时,需要移动其他元素来填补空缺,因此性能较差。
LinkedList插入或删除元素时,由于只需要改变相邻元素的引用,因此性能较好。
集合Set:
HashSet基于哈希表实现,它使用哈希函数来计算元素的存储位置,因此元素的存储顺序是不确定的。
TreeSet基于红黑树实现,它会对元素进行排序并存储在树结构中,因此元素是按照自然顺序或者指定的比较器顺序进行排序的。
元素的存储方式不同:
HashSet中的元素是无序的,它不会保持任何特定的顺序,其遍历是无序的。
TreeSet中的元素是有序的,它会根据元素的顺序进行排序存储,其遍历是有序的。
HashSet通过哈希值来判断元素的唯一性,如果两个元素的哈希值相等,那么HashSet会再调用equals方法来判断它们是否相等。
TreeSet会根据元素的自然顺序或者自定义比较器来判断元素的唯一性。
集合Map:
HashMap与TreeMap前者基于哈希表实现,后者基于红黑树实现。
利用entrySet()方法对map集合的键值对对象的一种遍历方式
下面是利用随机数进行投票统计的一个练习:
网络编程
网络编程即计算机与计算机之间通过网络进行数据传输.
网络编程三要素: ①IP ②端口号 ③协议.
IP:设备在网络中的地址,是唯一的标识.
端口号:应用程序在设备中的唯一标识.
协议:数据在网络中传输的规则
协议:计算机网络中,链接和通信的规则被称为网络通信协议.
UDP协议:用户数据报协议;面向无连接通信协议;速度快,但有大小限制且不安全,易丢失数据.
TCP协议:传输控制协议;面向连接的通信协议;速度慢,无大小限制,数据安全.
Socket是一种编程接口,可以让开发者通过编程来实现网络通信。
还有呢就是本周写的一些力扣题:
杨辉三角存在重复元素
两个数组的交集 这些都是我看过题解慢慢模仿写的,力扣题感觉每天练习个1-2题是很不错的一个习惯,希望自己能坚持下去,一开始可能会觉得很吃力没有头绪,但我相信随着时间的积累一定会有所收获的。