Java集合笔记

Collection

java标准库自带的 java.util 提供了集合类:** Collection** ,他是除 Map 外的其他集合类的根接口。java.util 包下主要提供了以三种集合类型:

  • List :一种有序列表的集合,例如,按索引排列的Student的List;
  • Set :一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set;
  • Map :一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。

List

在集合类中,List是最基础的一种集合:它是一种有序列表.

在使用List接口时,可以使用常用的几个方法:

  • 在末尾添加一个元素:boolen add(E e)
  • 在指定索引添加一个元素:boolen add(int index,E e)
  • 删除指定索引的元素:int remove(int index)
  • 删除某个元素:int remove(Object e)
  • 获取指定索引的元素:E get(int index)
  • 获取链表大小(包含元素的个数):int size()
  • 判断List是否包含某个指定元素:boolean contains(Object o)
  • 返回某个元素的索引,如果元素不存在,就返回-1 :int indexOf(Object o)

List特点

List接口允许我们添加重复元素
List还允许添加null

List的遍历

我们一般使用迭代器 Iterator

public class MyList {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String s = iterator.next();
            System.out.println(s);
        }

    }
}

Map

public class Main {
    public static void main(String[] args) {
        Student s = new Student("Xiao Ming", 99);
        Map<String, Student> map = new HashMap<>();
        map.put("Xiao Ming", s); // 将"Xiao Ming"和Student实例映射并关联
        Student target = map.get("Xiao Ming"); // 通过key查找并返回映射的Student实例
        System.out.println(target == s); // true,同一个实例
        System.out.println(target.score); // 99
        Student another = map.get("Bob"); // 通过另一个key查找
        System.out.println(another); // 未找到返回null
    }
}

class Student {
    public String name;
    public int score;
    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

通过上述代码可知:Map<K, V>是一种键-值映射表,当我们调用put(K key, V value)方法时,就把key和value做了映射并放入Map。当我们调用V get(K key)时,就可以通过key获取到对应的value。如果key不存在,则返回null。和List类似,Map也是一个接口,最常用的实现类是HashMap。

遍历Map

对Map来说,要遍历key可以使用for each循环遍历Map实例的keySet()方法返回的Set集合,它包含不重复的key的集合

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 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

我们知道,Map用于存储key-value的映射,对于充当key的对象,是不能重复的,并且,不但需要正确覆写equals()方法,还要正确覆写hashCode()方法。
如果我们只需要存储不重复的key,并不需要存储映射的value,那么就可以使用Set。

Set用于存储不重复的元素集合,它主要提供以下几个方法:

  • 将元素添加进Set:boolean add(E e)
  • 将元素从Set删除:boolean remove(Object e)
  • 判断是否包含元素:boolean contains(Object e)
posted @ 2020-11-25 11:29  疯狂coding  阅读(94)  评论(0)    收藏  举报