java 集合 ArrayList
变量--容器 存储一个元素
数组--容器
一组具有某种特性的数据存放在一起;
存储一组元素(数据类型一致) 长度固定
自己定义了Box(ArrayBox LinkedBox)--容器
存储一组元素 长度可变;
集合--容器 是指具有某种特定性质的具体或抽象的对象汇总而成的集体;
是用来存储一组元素 长度可变;
集合java.util
Collection Map
存储的都是value 存储的是以key-value形式存在
List Queue Set
有序可重复 无序无重复 key无序无重复 value无序可重复
*ArrayList HashSet
Vector TreeSet
Stack(LIFO)
*LinkedList
add() add()
remove() remove()
set()
get() iterator()
size() size()
序:顺序 添加进去的元素 取得元素的顺序一致 注意指的不适集合自己的顺序
重复:两个对象元素一致
ArrayList、Vector区别-->StringBuilder StringBuffer
List集合
1.ArrayList 2.LinkedList(双向链表) 3.Vector 4.Stack(一个口,先进后出)
1.ArrayList
所属的包 java.util
如何创建对象
无参数构造方法 带默认空间的构造方法 带collection参数的构造方法
常用方法--小容器(CURD 增删改查)
增删改查 add() remove() set() get() size()
addAll removeAll retainAll indexOf lastIndexOf contains() subList()
isEmpty() clear() ensureCapacity() iterator()
toArray() trimToSzie()
由于arrayList底层是一个Object[] 什么类型都可以存进去
取出来的时候多态的效果 需要自己造型 显得用起来非常的麻烦
JDK1.5之后-->泛型
用来规定数据类型的,定义的时候用一个符号代替某种类型
在使用的时候用具体的数据类型 将定义的那个符号替换掉
ArrayList特点适合遍历轮询 不适合插入删除;
泛型可以用在哪里?(not 造型)
在类或接口描述的时候 可以使用某种符号来表示一个未知的类型
在类型使用的时候 需要一个具体类型来代替
注意:泛型需要使用引用数据类型来代替
1.泛型类
类定义的时候描述某种数据类型 集合的使用就是这样
2.泛型接口
与泛型类的使用基本一致 子类实现接口时必须添加泛型
3.泛型方法
方法调用时传参数;方法的泛型与类无关 带有泛型的方法可以不放在带有泛型的类中;
4.高级泛型 规范边界 Extends super
import java.util.*;
public class Test0519{
public static void main(String[] args){
ArrayList<String> a=new ArrayList<String>();
a.add("abc");
a.add("10");
a.add("true");
a.add("3.4");
for(int i=0;i<a.size();i++){
System.out.println(a.get(i));
}//返回集合a中每个元素
System.out.println(a);//显示a中元素;重写了toString;
System.out.println(a.size());//显示长度;
int l=a.size();//a总长度;//每删除一个索引数据,则a长度-1;与数组不同,数组长度不变;
for(int i=0;i<l;i++){
System.out.println("即将删除元素是:"+a.get(0)+";此时a总长度为:"+a.size());
a.remove(0);
}
System.out.println(a);//显示a中元素;
System.out.println(a.size());//全部删除后,a中元素;
}
}

import java.util.*;
public class Test0519{
public static void main(String[] args){
ArrayList<Integer> a=new ArrayList<Integer>();
a.add(10);
a.add(2);
a.add(3);
ArrayList<Integer> b=new ArrayList<>();
b.add(100);
b.add(200);
//b中所有元素添加到a中
//a.addAll(b);//[10,2,3,100,200]并集
a.addAll(1,b);//[10,100,200,2,3] 插入
System.out.println(a);
//a.clear();//[]
boolean ise=a.contains(200);//包含
System.out.println(ise);
System.out.println(a);
int x=a.indexOf(2);//该数第一个索引号;
System.out.println(x);
int y=a.lastIndexOf(2);//该数最后一个索引号;
System.out.println(y);
System.out.println(a.isEmpty());//空?
a.remove(0);//删除0号索引的值;
System.out.println(a);
a.remove(new Integer(2));
System.out.println(a);
a.retainAll(b);//交集
System.out.println(a);
System.out.println(b);
a.set(1,300);//改
System.out.println("set:"+a);
a.removeAll(b);//差集
System.out.println("ab差集"+a);
//集合交集,并集,差集
System.out.println("a长度:"+a.size());
System.out.println("b截取:"+b.subList(0,1));
Integer[] mm=new Integer[a.size()];
a.toArray(mm);//集合变成数组;
System.out.println(mm.length);
a.trimToSize();//变成有效元素个数那么长
System.out.println(a);
}
}
泛型不能使用基本类型--如果想要使用基本类型 需要使用其对应的包装类
总结
集合有很多类 非常庞大的一个系统
1.了解集合的每一个具体的分支 各种特点;
2.常用的集合的方法;
3.每一个集合的特点;
4.集合底层的原理;
浙公网安备 33010602011771号