集合
集合,字面意思就是一堆有相似特征的东西放一起,也可以成为容器,我们最常见的一种容器就是数组:
—同一种类型,长度确定后不可变,每一个元素都有索引,索引从零开始
但这么长时间的学习我们也知道数组的不方便:长度固定不可更改。但是现实中我们解决问题的时候往往会遇到需要随时进行更改的数据量,这样一来数组的缺点就会无限放大。所以这里Java就为我们提供了许多不同特征的容器类
需要存储不可重复的数据,要存储对元素进行排序的数据,我们都可以通过这些容器类来实现,下面我们就学习如何使用容器类来存储这些数据
集合体系概述
Java集合API分为:
单列集合(值)(Collection)
-List:可以存储重复元素
-ArrayList:数组实现
-LinkList:链表实现
-Vector:数组实现(线程安全类)
-...
-Set:不可存储重复元素
-HashSet
-TreeSet
双列集合(键:值)(Map,mapping,键:值的映射):
-HashMap
-TreeMap
-HashTable
ArrayList实现类:
package Gather;
import java.util.ArrayList;
public class ArrayListDemo {
/*
List接口实现类
add
ArrayList:可以保存重复元素,底层是一个数组实现,添加元素的类型可以是任意的
虽然集合中默认是可以添加任意数据类型,但是后续处理时,会出现类型转换问题
所有Java中的集合类都支持自定义类型(泛型 把类型当作参数传递)
底层是数组,默认长度为10,当数组装满时会自动扩容.扩容到原来的1.5倍
*/
public static void main(String[] args) {
ArrayList arrayList=new ArrayList();
arrayList.add(1);
arrayList.add("dsaji");
arrayList.add(true);
/*
for (int i = 0; i < arrayList.size(); i++) {
Object obj=arrayList.get(i);
String s=(String)obj;
System.out.println(s.length());
}
*/
ArrayList<String> arrayList1=new ArrayList<>();
arrayList1.add("ok");//这个时候只允许添加String类型的内容
ArrayList<Integer> arrayList2=new ArrayList<>();
arrayList2.add(10);//自动装箱
//好处:一个集合中只能存储一种相同的数据类型,方便后续处理操作
//添加方法
ArrayList<String> arrayList3=new ArrayList<>();
arrayList3.add("a");//在末尾添加元素,自动扩容
arrayList3.add("a");
arrayList3.add("a");
arrayList3.add("a");
arrayList3.add("b");
System.out.println(arrayList3);
arrayList3.add(2,"kk");//使用的时候要注意索引会不会越界,从0到size(实际装填的个数)
System.out.println(arrayList3);
//删除方法
arrayList3.remove("b");//根据元素内容删除
System.out.println(arrayList3);
arrayList3.remove("a");//只删除匹配到的第一个元素
System.out.println(arrayList3);
String s=arrayList3.remove(1);//删除并返回指定位置上的元素
System.out.println(s);//输出返回的元素
System.out.println(arrayList3);//删除后的数组
}
}
LinkedList实现类:
package Gather;
import java.util.LinkedList;
public class LinkListDemo {
public static void main(String[] args) {
LinkedList<String> linkedList=new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.add("d");
linkedList.add("e");
linkedList.addFirst("start");
System.out.println(linkedList);
linkedList.addLast("end");
linkedList.add(3,"knn");//在指定位置插入元素
System.out.println(linkedList);
System.out.println(linkedList.get(4));//返回指定位置上的元素
System.out.println(linkedList.removeFirst());//删除第一个位置的元素并返回其值
}
}