java集合中List、Set、Map、Queue、Deque、Stack、遍历方式及特点

一、List(是一个接口):

特点
list是最基础的一种集合,有序表(可重复)。
内部按照放入元素的先后顺序存放,可以索引查找。有两个实现类(Arraylist(内部采用数组来存储数据,也是最常用的)(所以array和Arraylist之间是可以相互转化的)和Linkedlist)。

ArraylistLinkedlist
获取元素速度很快获取元素速度需从头开始查找
添加元素到末尾速度快-添加元素到末尾速度很快
在指定位置删除或添加需要移动元素在指定位置删除或添加不需要移动元素
内存占用很少内存占用较大

遍历方式
可以通过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());
		}
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值