相信大家一定对数组不陌生,初学的话可能是从 DataType[ ](如最常见的 String[])开始,随后可能更多地用到 List
和 ArrayList,这三者的联系不可谓不少,本文希望能为大家阐述清楚这三者定义及使用。
目录
1 数组—String[]
1.1 数组的创建
1.2 数组常规操作
2 集合
2.1 Collection
2.2 List 及 ArrayList
2.2.1 集合的创建—ArrayList
2.2.2 集合的使用—List & ArrayList
3 数组和集合的区别
总结
Java 语言中提供的数组是用来存储固定大小的同类型元素,官方定义解释地比较清楚了,可以简单概括为两个点:①储存容量有限②储存的元素类型需一致
DataType[] 也就是数组,数组作为一个容器,它可以基本类型+引用类型,这是它和集合的区别,DataType也就是定义数组中储存的元素类型,String[] 便是声明了一个元素类型是String 的数组。
基本数据类型如 int、byte、boolean 等8八种 ,非基本数据类型都是引用数据类型,比如类,接口,数组,涵盖很广,比如最常用的String 就是引用数据类型中的类。
我们new一个元素类型是String 的数组(Java 中创建一般用new 操作符),因为数组容量有限,需要声明时即确定数组中元素的个数
String[] list1 = new String[2];//2是元素个数
下边是数组创建的另一种形式,也是确定了两个元素,并且都是String 类型,如果将其中一个元素变更为其他类型就会报错。
String[] list2 = {"11","22"};
public static void main(String[]args)
{
//java数组初始化
String[] strArray={"1","2","3"};
//输出java数组
for(int i=0;i
Java 提供了集合类,用以保存数量不确定的数据,以及保存具有映射关系的数据,弥补了数组长度不可变的弱点,不过集合中只能储存引用类型。
Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。本文简单介绍一下Collection,我们平时用的最多的就是实现类ArrayList 了。
子接口及实现类关系:
常用方法(抽象方法):
可以看到List 是Collection 的子接口,而ArrayList 又是List 的实现类,即ArrayList 实现了List 和Collection 接口所有的抽象方法(上边的方法,可实现在ArrayList)以及继承了对应的普通方法。
同数组一样,创建集合一般也是通过new 来完成的,以下三种形式(定义元素类型是String)均可达到创建集合的目的,不过第二种最为常用。
ArrayList list1 = new ArrayList<>();
List list2 = new ArrayList<>(); //最常用!!
Collection list3 = new ArrayList<>(); //不怎么用
这时可能有人会有疑问接口怎么能拿来声明,因为虽然接口(例如List、Collection)无法创建实例对象,但是可以为接口自己创建一个指向自己的对象引用,而实现类的实例对象就在这充当指向接口的对象引用,这正是面向对象的多态性。
List
Collection
此处可能对于初学者来说较难理解,不过不妨碍继续阅读本文,或许看完后边的内容再回头会有新的理解。
Java8新特性: 支持接口存在普通方法(使用default 修饰的接口方法,可以拥有方法体,实现类不需要重写,可以被实现类继承)和静态方法(拥有方法体的,静态方法不需要实例化),因此尽管List 和Collection 接口同时通过ArrayList 实现类创建对象,但List 对象和Collection 对象也会存在部分差别。
详细链接:collection接口和list接口的区别
List 接口具备Collection 接口的常用方法,下边为集合的常规操作(元素类型为String)
public static void main1(String[]args) {
//java集合初始化
List list2 = new ArrayList<>();
//集合中加入元素,元素个数不做限制
list2.add("11");
list2.add("22");
list2.add("33");
//输出java集合,list2.size()表示集合长度,也就是元素的个数
//list2.get():根据index索引获取元素值
for (int i = 0; i < list2.size(); i++) {
System.out.println(list2.get(i));//输出结果 11 22 33
}
//修改java集合的第1个元素为"44"
list2.set(0,"44");
//输出java数组
for (String s : list2) {
System.out.println(s);//输出结果 44 22 33
}
}
为什么要用List list = new ArrayList(),而不用ArrayList alist = new ArrayList()呢?
下边这张网图能很大程度地表明:
其实数组和集合的作用一样,不过是灵活性有所区别,相对来说,集合要更为实用一些而且也应用更广。下边提供一个小彩蛋—数组和集合分别实现储存不同类型的元素
public void demo(){
//数组
Object[] list1 = new Object[2];
list1[0] = "11";
list1[1] = 11;
//集合
List
大家如果有疑问都可以评论提出,有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。