ArrayList、LinkedList、Vector、增强for循环、Set、Map

1、ArrayList

List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add(2, "xxx");

// 遍历数据
for(int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

// 通过迭代器遍历数据
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
    String str = iterator.next();
    System.out.println(str);
}

底层使用数组

不是线程安全的

2、LinkedList

LinkedList底层是双向链表

不是线程安全的

添加、修改、删除的性能高,查询的性能不高

3、Vector

和ArrayList功能类似,底层也是数组,最主要的区别是vector是线程安全的,缺点是效率比较低

4、增强for循环

对数组和集合做遍历

for(数据类型 变量:集合变量) {
    
}

5、Set

hash算法

Hash(散列、杂凑)算法,把任意长度的输入通过特定的算法换成固定长度的输出,输出的值就是hash值。

这个特定的算法就是hash算法,hash算法并不是一个固定不变的算法,只要能达到这个目的的算法都可以叫hash算法

  • HashSet

    元素唯一性

    无序性

    允许存在一个null值

    不是线程安全的

唯一性原理:对象的hash值和equals都相等,那么就是重复的对象

  • LinkedHashSet

    具有可预知迭代顺序的Set接口的哈希表和链表实现,此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序,即按照将元素插入到set中的顺序(插入顺序)进行迭代

    元素唯一性

    有序的

    允许一个null存在

    不是线程安全的
    与HashSet对比多了一个顺序,用的不多

  • TreeSet

    TreeSet可以自定义排序,如果TreeSet所存储的对象的类没有实现Comparable接口就会报错ClassCastException。所以我们如果想要使用TreeSet来对自定义的对象排序,必须实现Comparable接口

    元素唯一性

    可自定义排序

    不允许null存在

    不是线程安全的

6、Map

map是一个有键值对的集合

我们可以通过key来获取对应的值,将键值对映射到值的对象

一个map的key不能重复

键只能有一个空值,值可以有多个空值

map也是无序的

Map<K,V> K和V表示泛型,map的K和V可以是任何类型(不能是基本的数据类型)

Map集合和Collection集合的区别

Map集合是键值对的集合,Collection是单一出现的数据集合

Map的键值唯一的,而Collection子接口中List集合是可以重复的,set是唯一的

  • HashMap

    HashMap是map的实现类

    允许多个 null值和一个null值

    没有顺序

    不是线程安全的

  • TreeMap

    可以按照key来做排序

    key不能为null,key不能重复

    不是线程安全的

    可以做排序

  • Hashtable

    HashTable是map的实现类

    不允许有任何的null键和null值

    是线程安全的

    无顺序

  • LinkedHashMap

    是map的实现类

    允许一个null键和多个null值

    是有顺序的(按照添加的顺序)

    不是线程安全的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值