Fork me on GitHub

Collection和Map集合

前言

集合的长度是可变的、集合存储的都是对象。而且对象的类型可以不一致。
Collection集合和Map集合是所有集合的父接口。

Collection接口定义

体系结构的根接口,代表一组对象,有两个子接口List、Set接口。

  • List接口: 有序,有下标,元素可重复。
  • Set接口: 无序,无下标,不能重复。

Collection接口抽象方法

  • public boolean add(E e): 把给定的对象添加到当前集合中 。
  • public void clear() :清空集合中所有的元素。
  • public boolean remove(E e): 把给定的对象在当前集合中删除。
  • public boolean contains(E e): 判断当前集合中是否包含给定的对象。
  • public boolean isEmpty(): 判断当前集合是否为空。
  • public int size(): 返回集合中元素的个数。
  • public Object[] toArray(): 把集合中的元素,存储到数组中。
  • default Stream<E> parallelStream():把集合转变成流对象,进行Lambda表达式的使用。

Collection接口主要实现类

  • ArrayList: 底层采用数组实现,有序,查询快,增删慢。
  • LinkedList: 底层采用双向链表实现,有序,查询慢,增删快。
  • LinkedHashSet: 底层采用散列表实现,使用链表+红黑树的搭配解决哈希冲突的问题,无索引、不可以存储重复元素,但是多了一个维护数据存储顺序的链表。
  • HashSet:底层采用散列表实现,使用链表+红黑树的搭配解决哈希冲突的问题,无索引、不可以存储重复元素、存取无序。

Map接口定义

元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。

Map接口抽象方法

  • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
  • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
  • public V get(Object key): 根据指定的键,在Map集合中获取对应的值。
  • boolean containsKey(Object key): 判断集合中是否包含指定的键。
  • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。
  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

Map接口主要实现类

  • HashMap: 底层采用散列表+链表+红黑树,线程不安全的Map。
  • HashTable: 现已不推荐使用,使用ConcurrentHashMap进行替换。但是他有一个子类Properties类,唯一一个和文件读取打交道的集合类。多用于配置文件的读取
  • ConcurrentHashMap: jdk1.8底层采用CAS+Synchronize技术来保障线程安全。底层采用数组+链表+红黑树的存储结构,也就是和HashMap一样。
  • LinkedHashMap:底层用的是链表来进行的存储,有序
Properties文件读取类
定义:

是Java 语言的配置文件所使用的类。

常用方法:
  • public synchronized void load(Reader reader) throws IOException: 加载需要读取的配置文件。
  • public void store(Writer writer, String comments)throws IOException: 加载需要写入的配置文件。
  • public String getProperty(String key): 根据Key获取对应的value, key=value
  • public synchronized V put(K key, V value):存储要写入的key和value。
  • public void list(PrintStream out):遍历集合,输出所有的key和value。

tips:集合中key不能重复。

posted @ 2021-04-18 23:40  晨度  阅读(50)  评论(0编辑  收藏  举报