Collection List Set Map接口区别; ArrayList 和LinkedList 异同之处和应用; 遍历集合

Collection List Set Map接口区别

             接口储存一组    对象
Collection      不唯一      无序
List			不唯一      有序(插入顺序)
Set				唯一		无序
Map				键值对象		Key到value的映射

ArrayList 和LinkedList 异同之处和应用

ArrayList 和LinkedList

相同点:

  1. 数据特征相同:
    类中数据可重复,插入有序,可以有多个null值
  2. 继承关系相同:
    均直接或间接继承了AbstractList类,并实现了List接口

不同点:

  1. 底层数据结构不同:
    ArrayList底层数据结构是数组,LinkedList底层数据结构是双向链表
  2. 实现方法不同:
    因为LinkedList继承了Deque接口,所以LinkedList还实现了Deque接口的特有方法。
  3. 操作效率不同:
    ArrayList查询、修改的效率高,增加、删除的效率较低
    LinkedList增加、删除的效率高,查询、修改的效率较低

应用场景不同:

  1. ArrayList适用于查询量大,增删频率较低的场景
  2. LinkedList适用于增删量较大,查询频率较低的场景

一般默认遍历方式不同:

  1. ArrayList一般用for循环遍历
  2. LinkedList一般用迭代器遍历
  3. 因为ArrayList用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快

遍历集合方法

遍历集合方法

		//一、List集合
		List<String> list = new ArrayList<>();
        list.add("henrly");
        list.add("nancy");
        list.add("lucy");
        list.add("jeacy");
    
        //遍历List集合
        //1.使用for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //2.使用迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        //3.使用增强for循环
        for (String l : list) {
            System.out.println(l);
        }
        //二、Set集合
 		Set<Integer> set = new TreeSet<>();
        set.add(111);
        set.add(222);
        set.add(333);
        set.add(444);
         //遍历Set集合
        //Set集合无索引,所以无法使用for循环遍历
        //1.使用迭代器
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        //2.使用增强for循环
        for (Integer i : set) {
            System.out.println(i);
        }
		//三、Map集合
		HashMap<Integer, String> hmap = new HashMap<>();
        hmap.put(17, "h_nancy");
        hmap.put(18, "h_jerry");
        hmap.put(10, "h_lucy");
        hmap.put(12, "h_henrly");
        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(17, "nancy");
        map.put(18, "jerry");
        map.put(10, "lucy");
        map.put(12, "henrly");

        //遍历HashMap集合
        //Map集合的遍历使用keySet和entrySet
        //1.使用keySet
        for (Integer key : hmap.keySet()) {
            System.out.println(key + "----" + hmap.get(key));
        }
        System.out.println("------------------------------------------------");
        //2.使用entrySet
        for (Map.Entry<Integer, String> entry : hmap.entrySet()) {
            System.out.println(entry);
        }

        //遍历HashMap集合
        //Map集合的遍历使用keySet和entrySet
        //1.使用keySet
        for (Integer key : map.keySet()) {
            System.out.println(key + "----" + hmap.get(key));
        }
        System.out.println("------------------------------------------------");
        //2.使用entrySet
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "---" + entry.getValue());
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值