二刷能变强系列-集合框架Collection和Map

一.Java集合框架

Java的集合框架主要分为Collection和Map

下图可以看到集合框架的大致结构体系
在这里插入图片描述

二.List

通用方法

  • void add(int index, E element):将指定元素添加到集合中的指定位置
  • E get(int index):返回集合中指定位置的元素
  • E set(int index, E element):将指定位置元素替换成指定元素
  • E remove(int index):将指定位置的元素从集合中移除

1.ArrayList

ArrayList集合特点

基本特点

  • 元素存储有序
  • 带索引的集合
  • 可以有重复元素
  • 数组结构,查询快,增删慢
package com.learn.myCollection;

import java.util.ArrayList;
import java.util.List;

public class MyArrayList {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        String s1 = new String("abc");
        String s2 = new String("abc");
        list.add(s1);
        list.add(s2);
        list.add("abc2");
        System.out.println(list);
        System.out.println("--------------------");
        String str = list.get(2);
        System.out.println(str);
        System.out.println("--------------------");
        list.set(2,"abc3");
        System.out.println(list);
        System.out.println("--------------------");
        list.remove(2);
        System.out.println(list);
    }
}

2.LinkedList

LinkedList集合特点

基本特点

  • 元素存储有序
  • 带索引的集合
  • 可以有重复元素
  • 链表结构,查询慢,增删快
  • 包含大量首尾操作
package com.learn.myCollection;

import java.util.LinkedList;
import java.util.List;

public class MyLinkList {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        String s1 = new String("a");
        String s2 = new String("a");
        list.add(s1);
        list.add(s2);
        list.addFirst("b1");//首元素前添加
        list.addLast("b2");//追加元素 相当于add
        System.out.println(list);
        String str = list.getFirst();//获取首元素
        System.out.println(str);
        str = list.getLast();//获取尾元素
        System.out.println(str);
        //get remove set 方法类似
    }
}

3.Vector

vector它的功能和ArrayList差不多,但是它是线程安全的,所以性能肯定是没ArrayList好的。

三.Set

通用方法

  • void add(int index, E element):将指定元素添加到集合中的指定位置
  • E get(int index):返回集合中指定位置的元素
  • E set(int index, E element):将指定位置元素替换成指定元素
  • E remove(int index):将指定位置的元素从集合中移除

1.HashSet

基本特点

  • 元素存储无序
  • 不带索引
  • 不可以有重复元素
  • 数组+链表/红黑树 结构
  • 不能使用普通的for循环遍历

在这里插入图片描述

package com.learn.myCollection;


import java.util.HashSet;

public class MyHashSet {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        String s1 = new String("abc");
        String s2 = new String("abc");
        set.add(s1);
        set.add(s2);
        set.add("重地");//重地和电话的hashCode相等
        set.add("电话");
        set.add("abc");
        System.out.println(set);
    }

}

2.LinkedHashSet

基本特点

  • 元素存储有序
  • 不带索引
  • 不可以有重复元素
  • 数组+链表/红黑树 和 链表 结构
  • 不能使用普通的for循环遍历

LinkedHashSet 有序的原理
LinkedHashSet是继承HashSet的,它比HashSet多了一个链表结构就是为了记录存储顺序的

四.Map

1.HashMap

基本特点

  • key-value结构
  • key不能重复,value可以重复
  • key不能为空,value可以为空
  • 存储结构 数组+链表/红黑树
  • 线程不安全

原理和hashSet差不多,都是通过hashCode取余分布在不同的数组下标上,初始的initialCapacity为16,就是数组的大小有16个。

当元素的hashCode求余后落到的数组上使有值的(hash冲突),这个时候我们就是使用到链表来将在他们连接起来放在同一个索引下边上。

当链表的大小大于8个的时候,这是我们的链表结构会转换为红黑树,加速链表的遍历(jdk1.8后新特性)

2.LinkedHashMap

基本特点

  • key-value结构
  • key不能重复,value可以重复
  • key不能为空,value可以为空
  • 存储结构 数组+链表/红黑树 和 链表
  • 线程不安全

LinkedHashSet 有序的原理
LinkedHashMap是继承HashMap的,它比HashMap多了一个链表结构就是为了记录存储顺序的

3.HashTable

基本特点

  • key-value结构
  • key不能重复,value可以重复
  • key不能为空,value不能为空
  • 存储结构 数组+链表/红黑树
  • 线程安全

五.结束

简单的讲了讲HashSet和HashMap,主要是面试的时候这两块问的比较的多,所以这两块写的比较详细,其他的了解下就好,记住他们的的特点,可以在什么时候使用。写的有点简单,有错有不够详细的请轻喷,我一定改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值