Lab2中遇到的困难及相关知识
目录
1 对一些对象类型的不熟悉
1.1 Queue
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,有先进先出的特点。
其常用方法如下:
-
add():将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回
true,如果当前没有可用的空间,则抛出 IllegalStateException。 -
element():获取,但是不移除此队列的头。
-
offer():将指定的元素插入此队列(如果立即可行且不会违反容量制),当使用有容量限制的队列时,此方法通常要优于
add(E),后者可能无法插入元素,而只是抛出一个异常。 -
peek():获取但不移除此队列的头;如果此队列为空,则返回 null。
-
poll():获取并移除此队列的头,如果此队列为空,则返回 null
-
remove():获取并移除此队列的头。
1.2 Set
Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合。
其常用方法如下:
-
add( ): 向集合中添加元素
-
clear( ):去掉集合中所有的元素
-
contains( ):判断集合中是否包含某一个元素
-
isEmpty( ):判断集合是否为空
-
remove( ):从集合中去掉特定的对象
-
size( ):返回集合的大小
1.3 List
List
是一个接口,它继承于Collection的接口。它代表着有序的队列。当我们讨论List的时候,一般都和Set作比较。
List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储。如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3)。而Set中的元素不可以重复,并且是无序的(从set中遍历出来的数据和放入顺序没有关系)。
List的常用方法:
-
add( ): 向List的指定位置插入元素
-
get():返回list中指定位置的元素
-
set():修改List中的某一指定位置的元素
-
isEmpty( ):判断List是否为空
-
remove( ):从List中去掉特定的对象
-
size( ):返回List的大小
1.4 Map
Map是将键映射到值的对象的数据结构,一个映射不能包含重复的键,且每个键最多只能映射到一个值。
Map的常用方法:
-
put():添加映射对
-
get():根据键来获取其映射的值
-
containsKey():判断Map中是否有指定键值
-
containsValue():判断Map中是否有指定的值
-
remove():从Map中去掉特定的对象
-
keySet():获得键的集合
-
values():获得值的集合
-
isEmpty():判断Map是否为空
-
entrySet():返回Map中的元素对
2 循环遍历
循环遍历中的加强for循环以及迭代器遍历是我之前没有用的循环遍历方式。
2.1 普通for循环
类似于for (int i = 0;i < n;i++)的循环遍历;
2.2 加强for循环
类似于for (String str : list)的循环遍历;
值得注意的是,在加强for循环的过程中,只能观察被遍历的元素的值,并不能对其进行删除等操作,否则会发生意料之外的事情。
2.3 迭代器Iterator
例如如下程序:
Iterator<String> it = list.iterator();
while(it.hasNext()){
String x = it.next();
if(x.equals(“del”)){
it.remove();
}
}
总结
本章回顾了我在做Lab2时遇到的两个主要的困难以及与它们相关的知识。