容器

二维数组

就是数组中嵌套数组,也就是大数组嵌套小数组,但是数组的类型不可更改

定义:

数据类型 变量名;
数据类型[] 数组名;  ---一维数组的声明
数据类型[][] 数组名;	---二维数组
数据类型[] 数组名[];

初始化

  1. 动态初始化: 创建数组对象的时候不赋值,后续赋值
1. 数据类型[][] 数组名 = new 数据类型[一维的长度][二维的长度];
2. 一维的长度:外层数组
3. 二维的长度:内层的每一个小数组
4. 数据类型[][] 数组名 = new 数据类型[一维的长度][];

  1. 静态初始化:创建数组对象的同时不赋值
数据类型[][] 数组名 = new 数据类型[][]{{1,2,3},{2,3},{4}...};

容器

一般来说,容器就是可以储存多个数据的盒子,它可以根据数据的个数自行进行长短的变化,他只能存引用数据类型

Collection
是一个接口也是容器类的父接口

List有序可重复

Set
无序不可重复

ArrayList
底层实现: 可变数组实现,通过数组的拷贝改变数组的长度动态实现可变

  1. 优点:做查询效率高
  2. 缺点:做增删效率低,通过数组拷贝
  3. 应用: 大量做查询,少量做增删的时候推荐使用ArrayList
  4. 扩容:每次扩容原容量的1.5倍(newCapacity = oldCapacity + (oldCapacity >> 1); ) ,使用 Arrays.copyOf进行数据的拷贝

Vector 向量
与ArrayList像,都是由数组实现内部存储结构

  1. 区别:早起jdk版本提供,后续jdk版本推荐ArrayList代替Vector
  2. Vector线程安全,效率较低,ArrayList线程不安全,效率较高,重效率轻安全
    扩容:每次扩容原容量的2倍,没有ArrayList节省空间

LinkedList

  1. 底层:双向链表实现
  2. 优点:增删效率高
  3. 缺点:查询效率低
    注意:容器中只能存放引用数据类型的数据,会发生自动拆装箱,不需要我们手动控制,已经为所有的基本数据类型提供了对应的包装类型

list
接口为提供了一些有关于索引操作的功能,接口的实现类都具有一些功能

创建:

ArrayList()  内部空数组,第一次添加数据时构建10个大小
ArrayList(int initialCapacity) 创建指定大小的容器,当能够确定数据多少的时候,推荐使用,效率更高
构造一个具有指定初始容量的空列表。

Map
存储的每一个数据都是k-v组成

  1. k 无序的,不可重复–>Set集合
  2. v 无序的,可重复 -->Collection集合
    key和value之间存在映射关系,根据key获取value
  3. key和value之间存在映射关系,根据key获取value
  4. 如果存储的数据的时候,key相同的数据value会覆盖
  5. 遍历
1.keySet() 获取所有的key,返回一个Set集合,然后可以根据key获取value
2.values() 获取所有的value值,返回一个Collection集合
3.entrySet() 返回此映射中包含的映射关系的Set集合

set
里面的数据无序且不重复
4. 遍历:

  1. 普通for循环
for(int i=0;i<=list3.size()-1;i++){
			System.out.println(list3.get(i));
		}
  1. 增强for循环
for(String s:list3){
			System.out.println(s);
		}
  1. 迭代器
Iterator<String> it=list3.iterator();
		//2.判断是否有下一个元素
		while(it.hasNext()){
			//3.获取下一个元素			System.out.println(it.next());
		}

4 .使用List有的列表迭代器

ListIterator it2=list3.listIterator();
		while(it2.hasNext()){
			System.out.println(it2.next());
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值