对于熟悉java的同学来说,做OJ题时选用java是不错的选择,如字符串处理方便,没有指针困扰,自动回收内存垃圾等。但要高效做题,必须要熟悉java中现成的常用数据结构的类。
常用的现成数据结构类
- 线性表(List接口,有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。)
- Stack,堆栈
- Vector, 动态数组
- ArrayList, 实现了List接口的动态数组
- LinkedList, List 接口的链接列表实现,包含队列、双端队列的API,同时实现Queue接口
- 映射(Map接口,将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值)
- Hashtable,此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
- HashMap,基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)
- LinkedHashMap,Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序,为插入顺序。
- TreeMap,基于红黑树,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
- 集合(Set接口是一个不包含重复元素的集合)
- HashSet,此类实现 Set 接口,由哈希表支持,元素存储迭代没有固定顺序
- LinkedHashSet,具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现,顺序为插入顺序
- TreeSet,元素是内部排序的,使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
- 优先队列
- PriorityQueue,一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序。元素小的优先级高,输出时先输出。实现Queue接口