集合框架
Student[] st=new student[5];(引用数据类型数组)
St[0]=new student(“张三”,23);-----------创建一个学生对象,存储在数组第一个位置(st[0],代表一个对象引用)
数组和集合的区别
- 数组既可以存基础数据类型,也可以存储引用数据类型。基础存的是值,引用存的是地址。
集合只能存引用数据类型,也可存引用,但存储是自动装箱成对象。 - 数组长度是固定的,不能自动增长;
集合的长度是可变的,根据元素的增加而增长。
数组集合什么时候用;
元素个数固定的用数组;
元素个数不固定用集合
Collection(单列集合接口)
List有序(存取数据顺序一致) set(存和取顺序不一致),无索引,不可重复
有索引,可重复
接口不能被实例化,可以父类引用指向子类对象;
Collection c=new arrayList();
Boolean b1 =c.add(“abc”);-----------可放所有类型的数据,返回值类型为boolean;
Boolean b1 =c.add(true);
Boolean b1 =c.add(100);
Boolean b1 =c.add(new student(“张三”,23)); object obj=new student();
add方法list集合返回true,list可以重复; student s=(student)arr[i];向下转型;
Set 方法重复是false;
Arraylist的父类重写了tostring方法
C.remove(“b”);删除制定元素
C.clear(); 清空集合;
C.contains(“b”); 判断是否包含;
C.isempty()判断是否为空;
C.size()获取元素个数;
Object[] arr=c.toarray();集合转数组;
C1.addall(c2)-------c2添加到c!;[a,b,a,b]
C1.add(c2)-------[a,b,[a,b]]将c2看成一个整体;
C1.removeall(c2)-------删除交集;
c1.containsall(c2);----判断调用的集合是否包含传入的集合;
C1.retainall(c2);----------取交集看c1是否发生改变,改变为true;
Add,remove,contain,retain,.....返回值是boolean;
Iterator(迭代)
Iterator it=c.iterator(); -----------获取迭代器;
Boolean b1=it.hasnext();-------------判断集合中是否有元素,有为true;
Object obj1=it.next();-------------获取元素;
迭代器原理:对集合进行遍历,每一个集合的存储结构不同,每一个集合的存取不同,那么每一个类中定义hasnext(),next()方法,这样会让程序过于臃肿,迭代器方法向上抽取接口,然后在每个类内部定义自己的迭代方式。好处:规定了集合体系遍历方式的hasnext和next,第二代码底层实现,使用者不需要了解怎么实现的
List
List ls=new arraylist()’
List.add(“a”);
List.add(1,”b”);-----------存储是出现不存在索引,索引越界异常。Index<=siez.
Object obj=List.remove(1);----通过索引删除元素(删除不会自动装箱)
Object obj=List.get(0)--------根据索引获取对象。
通过索引遍历
List.set(1,”z”)---------指定位置元素修改。
For(int i;i<list.size();i++)
Student s=(student)list.get(i);
Listinteror ls=new listerinteror();---------在迭代的过程中可以添加
While(list.hasnext){
String s =(string)ls.next();
If (“world”.equals(str)){
ls.add(“”)
}
Vector(淘汰)线程安全,速度慢
Vector v=new vector();
v.addelement(“a”)----------添加
Enumeration en=v.elements();-----------获取枚举
While(en.hasmoreelements()){-------------判断是否有元素
Syso(en.nextelement())-------------------获取元素
}
集合框架
数组实现:查询修改快,增删慢
链表实现:查询修改慢,增删快
Vecor
线程安全,效率低
ArrayList 线程不安全,效率高
共同点:数组实现
Arraylist:底层数组,查询修改快
Linklist:链表结构,增删快
共同点:线程不安全的