集合是一组对象的对象。
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
HashSet:以哈希表的形式存放元素,插入删除速度很快。
ArrayList:动态数组
LinkedList:链表、队列、堆栈。
Iterator是获取集合中元素的过程,实际上帮助获取集合中的元素。迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。Iterator仅有一个子接口ListIterator,是列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。
Map将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。
HashMap:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
TreeMap:它实现SortedMap 接口的基于红黑树的实现。此类保证了映射按照升序顺序排列关键字,根据使用的构造方法不同,可能会按照键的类的自然顺序 进行排序(参见 Comparable),或者按照创建时所提供的比较器进行排序。
1:数组的大小是固定的,一旦定以后不能扩充。而链表是可变的,可扩充的。
2:链表灵活,但是空间和时间额外耗费较大;数组大小固定,元素位置固定,但是操作不灵活,且容易浪费间, 是时间耗费较小,尤其是元素变化不大的时候效率很高。
3:数组有索引值,可以通过索引值找到该位置的元素。而链表没有,链表是反应节点与节点之间的关系
1。==是逻辑运算符,而equals是一个方法
2。当==两边是八种基本运算符时,比较的是==两边的内容。而equals是两边的对象是否是同一对象
一次握手: 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据 段,主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。
二次握手:主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我
三次握手:主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了
特点:三次握手没有应用层的数据SYN这个标志位只有在TCP建产连接时才会被置1
握手完成后SYN标志位被置0
TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(
即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.
关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须
通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.
一次断开: 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
二次断开: 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
三次断开: 由B 端再提出反方向的关闭请求,将FIN置1
四次断开: 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端
和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础