特点
list是最基础的一种集合,有序表(可重复)。
内部按照放入元素的先后顺序存放,可以索引查找。有两个实现类(Arraylist(内部采用数组来存储数据,也是最常用的)(所以array和Arraylist之间是可以相互转化的)和Linkedlist)。
Arraylist | Linkedlist |
---|---|
获取元素速度很快 | 获取元素速度需从头开始查找 |
添加元素到末尾速度快- | 添加元素到末尾速度很快 |
在指定位置删除或添加需要移动元素 | 在指定位置删除或添加不需要移动元素 |
内存占用很少 | 内存占用较大 |
遍历方式
可以通过for循环根据索引配合get(int)方法遍历(但是并不推荐,这种代码复杂,而且get(int)方法zhiyouzaiArraylist中才高效)。因此使用迭代器Iterator(本身就是一个对象(在list实例调用时创建的))来访问list较好。
Iterator有两个方法:
1:判断是否有下一个元素:
boolean hasNext() //判段是否有下一个元素
2:返回下一个元素:
E next() //返回下一个元素
代码实例
public class Main{
public stataic void main(Stirng[] args){
list<String> list = Arrays.aslist("杭州",北京",南京","上海");
for (Iterator<String> it = list.iterator();//it.hasNext();
){
String s = it.next();
System.out.println(s);
}
}
}
二、Map(接口)
特点
map集合是一种高效的通过key快速查找value。
Map是一种键-值映射表,当我们调用put(K key, V value)方法时,就把key和value做了映射放入Map,但如果在调用的过程中,key不存在,则会返回null。与list不同的是:map的存放顺序是不一定的(JDK的版本不同,相同代码的输出顺序都是不同的)。
需要注意的是重复放入key-value是不会报错的,相对应的value会将之前的value替换。
还有一点是使用map时,要覆写equals方法(String为key时除外)、hashcode()方法。
遍历方法
一、
可以使用for each循环遍历Map实现的keySet()方法返回的Set集合,包含不重复的key集合。
public class Main{
public static void main(String[] args){
Map<String,Integer>map = new HashMap<>();
map.put("appale",123);
map.put("pear",456);
map.put("banana",789);
for(String key : map.keySet()){
Integer value = map.get(key);
System.out.println(Ket+"=" + value);
}
}
}
二、
同时遍历key和value可以使用 for each循环遍历Map对象的entrySet()集合,它包含每一个key-value映射:
public class Main{
public static void main(String[] args){
Map<String,Integer>map = new HashMap<>();
map.put("appale",123);
map.put("pear",456);
map.put("banana",789);
for(String key:map.keySet()){
Integer value = map.get(key);
System.out.println(key + "=" +value);
}
}
}
三、Set(接口)集合
特点
set集合用于存储不重复的元素集合,所以会用set去除重复的元素。常用的实现类是HashSet(无序但是唯一)。
sortedSet接口保证元素有序且唯一(Treeset(内部用TreeMap作为存储结构)是其实现类)
遍历方式
一、
在遍历时,可以先将其转化为数组(用toArray方法),然后利用数组的遍历方式(for each循环)遍历。
二、
使用迭代器进行遍历。
Iterator<String> iterator =list.iterator();
while (iterator.hasNext()){
String m = iterator.next();
System.out.println(m);
}
四、Queue队列
特点
Queue是线性表结构,“先入先出,后入后出FIFO”。
只允许前端删除,后端插入。
它包括两个队列(有界队列(有界限,大小长度有限制,通过ArrayBlockongQueue实现)和无界队列(无界限,大小长度有限制))。
遍历方法
一、常用的for each循环:
for(String s : queue) {
System.out.println(s);
}
二、迭代器来遍历(迭代器是集合类中最常用的遍历方式,因为迭代器在遍历的时候,已统一的方式进行遍历,而不必关心内部的存储结构):
Iterator it = queue.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
五、Deque双端队列
特点
Deque双端队列允许从队列的两头进或出。它是Queue的扩展。
Deque是一个接口,它的实现类有ArrayDeque和LinkedList。
遍历方式
一、
用while循环来遍历:
String item = "";
while((item = deque.pollLast()) != null) {
System.out.println(item);
}
二、用for each循环(只能从队头开始)
for(String s:deque){
System.out.println(s);
}
三、迭代器:
Iterator it = deque.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
六、Stack栈
特点
栈Stack是一种后进先出(LIFO)的数据结构。
只有入栈push(E)和出栈pop(E)两种 *** 作。
peek(E)取栈顶元素但不会删除。
遍历方式
一、用for each循环遍历
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
二、用Iterator迭代器遍历
Iterator it = stack.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)