java集合:Collection和Map

集合Collection概述

  1. 集合与数组区别

    • 数组长度固定,集合长度可变
    • 数组存放基本类型数据,集合存放对象的引用
  2. 集合关系

    1. Collection
      • List:ArrayList、LinkedList
      • Set:HashSet、LinkedHashSet、TreeSet
    2. Map
      • HashMap
      • TreeMap
  3. 集合接口方法

    方法功能
    add()添加元素到集合
    remove()移出元素
    isEmpty()判断当前集合时候为空
    iterator()返回集合迭代器
    size()返回集合元素个数

List集合接口

  • 元素允许重复
  • 元素顺序就是插入顺序
  1. 特有方法

    方法功能
    get(int index)获得索引位置的元素
    set(int index, Object obj)将指定位置的元素设置为指定对象
  2. 实现类

    1. ArrayList:数组实现,用于随机访问

      class ListDemo {
          public static void main(String[] args) {
              List<String> list = new ArrayList<>();
              list.add("a");
              list.add("b");
              list.add("c");
      
              list.remove(2);
              list.set(1, "d");
              //for遍历
              for (int i = 0; i < list.size(); i++) {
                  System.out.println(list.get(i));
              }
              //迭代器
              Iterator<String> iterator = list.iterator();
              while (iterator.hasNext()) {
                  System.out.println(iterator.next());
              }
          }
      }
      
    2. LinkedList:链表实现,用于插入和删除。可用来实现栈和队列

      • 特有方法

        方法含义
        addFirst()/addLast()添加首部/尾部元素
        getFirst()/getLast()获取首部/尾部元素
        removeFirst()/removeLast()移出首部/尾部元素
      class ListDemo {
      
          public static void main(String[] args) {
              LinkedList<String> linkedList = new LinkedList<String>();
              linkedList.addFirst("a");
              linkedList.addFirst("b");
              linkedList.addFirst("c");
      
              System.out.println(linkedList.getFirst());
              System.out.println(linkedList.peek());
              Iterator<String> iterator = linkedList.iterator();
              while (iterator.hasNext()) {
                  System.out.println(iterator.next());
              }
      
          }
      }
      

      c
      c
      c
      b
      a

Set集合接口

  • 元素不能重复
  • 存取无序、无下标
  1. 实现类

    1. HashSet:哈希表实现,存储自定义对象时,必须重写hasCode和equals方法

      class ListDemo {
      
          public static void main(String[] args) {
              Set<String> set = new HashSet<String>();
              set.add("a");
              set.add("b");
              set.add("b");
              set.add("c");
      
              Iterator<String> iterator = set.iterator();
              while (iterator.hasNext()) {
                  System.out.println(iterator.next());
              }
          }
      }
      

      a
      b
      c

    2. TreeSet:二叉树实现,元素唯一,可以进行排序(在添加的时候进行排序)

      class ListDemo {
      
          public static void main(String[] args) {
              TreeSet<String> treeSet = new TreeSet<String>();
              treeSet.add("a");
              treeSet.add("c");
              treeSet.add("b");
      
              for (String str : treeSet) {
                  System.out.println(str);
              }
          }
      }
      

      //输出有序
      a

      b

      c


Map集合

  • 键值对;键唯一,值可重复
  • 存取无序
  1. Map接口方法

    方法功能
    put(key, value)向集合中添加指定的key-value映射关系
    containsKey(key)判断集合中包含指定的key
    containsValue(value)判断集合中包含指定的value
    get(key)获取key对应的value值
    keySet()返回所有key对应的Set集合
    values()返回包含所有值的Collection集合
    entrySet()所有键值对集合
  2. 实现类

    1. HashMap:哈希表实现,存储对象时,必须重写hasCode和equals方法

      public class Demo{
          public static void main(String[] args) {
              HashMap<String, String> hashMap = new HashMap<>();
      
              hashMap.put("A", "java");
              hashMap.put("B", "C++");
              hashMap.put("C", "python");
      
              //遍历1
              for (String key : hashMap.keySet()) {
                  System.out.println("key="+key + " and value=" + hashMap.get(key));
              }
              //遍历2
              Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator();
              while (iterator.hasNext()) {
                  Map.Entry<String, String> entry = iterator.next();
                  String key = entry.getKey();
                  String value = entry.getValue();
                  System.out.println(key + "-" + value);
              }
          }
      }
      

      HashMap的遍历

      • keySet():循环

      • entrySet():迭代

        Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value(每个entry都是Map);

        entrySet()返回就是这个map中各个键值对映射关系的集合

    2. LinkedHashMap:链表和哈希表实现,存取有序

      public class Demo{
          public static void main(String[] args) {
              LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
              linkedHashMap.put("A", "Java");
              linkedHashMap.put("B", "C++");
              linkedHashMap.put("C", "Python");
      
              //遍历1
              Set<String> set = linkedHashMap.keySet();
              for (String key : set) {
                  System.out.println("key=" + key + " value=" + linkedHashMap.get(key));
              }
              //遍历2
              Iterator<Map.Entry<String, String>> iterator = linkedHashMap.entrySet().iterator();
              while (iterator.hasNext()) {
                  Map.Entry<String, String> entry = iterator.next();
                  String key = entry.getKey();
                  String value = entry.getValue();
                  System.out.println("key=" + key + " value=" + linkedHashMap.get(key));
              }
          }
      }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值