1.什么是UML
UML是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法,是开发面向对象软件和软件开发过程中非常重要的一部分。UML主要使用图形符号来表示软件项目的设计,使用UML可以帮助项目团队沟通、探索潜在的设计和验证软件的架构设计。
2.ArrayList、LinkedList和Vector的区别
1)ArrayList和LinkedList的区别
相同点:
1、LinkedeList和ArrayList都实现了List接口。
2、ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。
不同点:
1、ArrayList底层实现是数组,而LinkedList是双向链表。
2、ArrayList查询快(下标)、增删改慢、LinkedList是查询慢,但是在插入删除时效率比较高。
2)ArrayList和Vector的区别
相同点:
1、ArrayList和Vector都是用数组实现的
2、默认初始化大小都是10
不同点:
1、Vector多线程是安全的,而ArrayList不是。Vector类中的方法很多有synchronized进行修饰,这样就导致了Vector在效率上无法与ArrayList相比;
2、两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同的。(ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍,Vector会扩充为原来空间的2倍)
3.HashSet、LinkedHashSet和TreeSet的特点:
1)HashSet
- 它不允许出现重复元素;
- 不保证集合中元素的顺序
- 允许包含值为null的元素,但最多只能有一个null元素。
- HashSet的实现是不同步的。
2)LinkedHashSet:
- 哈希表和链表实现Set接口,具有可预测的迭代次序;
- 由链表保证元素有序,也就是说元素的存储和取出顺序是一致的。
- 由哈希值保证元素唯一,也就是说没有重复的元素
2)TreeSet:
TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。TreeSet是基于TreeMap实现的。TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。
4.HashMap与Hashtable的区别
1)HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
2)HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
3)HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
4)Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
就HashMap与HashTable主要从三方面来说。
1)历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现;
2)同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的;
3)值:只有HashMap可以让你将空值作为一个表的条目的key或value
5.List,Set,Map三者的区别及总结
List:对付顺序的好帮手
List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象
Set:注重独一无二的性质
不允许重复的集合。不会有多个元素引用相同的对象。
Map:用Key来搜索的专家
使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。