1.Git和SVN的区别
git是分布式的,SVN不是;git把数据按元数据方式存储,而SVN是按文件;git分支和SVN分支不同;git没有一个全局的版本号,而SVN有;git的内容完整性要优于SVN。
2.http与HTTPS的区别
HTTPS采用的是SSL加密,信息传输更加安全;
端口号不一样,HTTP的端口是80,后者是443。
HTTP的连接是无状态的,而HTTPS是SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
3.ArrayList和LinkedList的区别
1>ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2>对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3>对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4.ArrayList在循环中删除元素
不建议在for循环中循环判断条件,当条件满足时删除某一元素。
要么将ArrayList转换为Iterator然后判断条件Remove元素,要么使用第三个集合存储更改后的值。
不建议的原因是当删除后,ArrayList内部的索引发生变化,删除元素后的值整体往前挪一位,最后导致出现错误。
5.无状态的对象永远是线程安全的
6.HashMap与hashtable的区别
HashMap是支持null键和null值的,而HashTable在遇到null时,会抛出NullPointerException异常。
HashTable是同步的,HashMap不是,也就是说HashTable在多线程使用的情况下,不需要做额外的同步,而HashMap则不行。
HashTable已经被淘汰了,不要在代码中再使用它。简单来说就是,如果你不需要线程安全,那么使用HashMap,如果需要线程安全,那么使用ConcurrentHashMap。HashTable已经被淘汰了,不要在新的代码中再使用它。
7.遍历map的方式
1>for循环对keySet对象进行遍历
2>iterator迭代entrySet对象
3>for循环遍历map.values(),只能得到value值
4>map.entrySet遍历key和value
8.map和set的联系
map.keySet获取的是map的所有key值,最后显示的是一个set。map集合的所有key具有set集合的特征,不能重复且没有顺序。
9.对set的遍历
使用加强for循环或者iterator迭代器的方式进行迭代。