list,set,map集合

数组和集合的特点及转换

int[] a = new int[10];    长度固定    ArrayList list = new ArrayList();
int b[] = new int[10];                ArrayList list1 = new ArrayList(10); 	//可以不指定长度
int[] c = {1,2,3};        数据类型相同    ArrayList<Integer> list2 = new ArrayList<>();//不使用泛型可添加不同的数据类型   

  1. 数组大小固定,集合长度可变;
  2. 同一数组只能存放类型一样的数据;集合可存储不同的数据类型。  

 数组和list的转换

数组转list使用 Arrays.asList(数组)

int[] arr = new int[10];  //长度固定

List<int[]> list = Arrays.asList(arr);//当数组转换成list之后,不能做add,remove等操作
//list.add(12);    //会报错  要操作添加,删除等操作需要
ArrayList arraylist = new ArrayList(list);
arraylist.add(2);

list转数组,使用 list.toArray()

List<String> list = new ArrayList<String>();
list.add("123");
list.add("zking");
String[] str = list.toArray(new String[list.size()]);
for (int i=0 ;i<str.length ;i++){
    System.err.println(str[i]);
}

 

List集合有序(插入和输出顺序一致)可重复可以多个插入null元素

1.ArrayList底层数据结构是数组 查询快 增删慢 线程不安全 效率高 默认长度是10 超过长度时进行扩容,原容器的0.5倍

2.Vector 底层数据结构是数组 查询快 增删慢 线程安全 效率低 默认长度是10  超过长度时进行扩容,原容器的1倍

3.LinkedList底层数据结构是链表(双向链表) 查询慢 增删快 线程不安全 效率高

Set 无序不重复,只允许一个null元素

1.HashSet 按照哈希算法来存取集合中的对象  存取快  默认长度是16  超过长度的0.75倍时进行扩容,原容器的1倍

2.TreeSet (集合排序中存储的类型必须是一致的自然排序

2.LinkedHashSet:输出顺序和插入的顺序一致

 (当程序向HashSet中 add()的一个对象的时候, 先用hashCode方法计算出该对象的哈希码 哈希码不一致 添加 哈希码一致

 不添加 相同对象不添加 然后用equals判断对象的属性是否一致 比较结果为false就添加 true就不添加 不同对象添加)

Map 键唯一,值不唯一(键允许一个null,值可多个)

1.HashMap 允许存在一个为null的key,多个为null的value线程不同步,效率高 默认长度16超过长度的0.75倍时进行扩 容,原容器的1倍

2.HashTable  key和value都不允许为null线程同步,效率低,默认长度16超过长度的0.75倍时进行扩容,原容器的1倍+1

3.TreeMap 不允许null线程不同步的,可以用于给Map集合中的键进行排序和Set很像其实 Set底层就是用了Map集合

需要得到一个有序的结果用T reeMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值