一.集合框架概述
Java集合框架都位于Java.util包中
Java集合框架可以包含三大块内容,对外接口,接口的实现,对集合运算的算法
Set、List和Map可以看做集合的三大类:
List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问。
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。
接口
表示集合的抽象数据类型,例如Collection,List,Set,Map等
实现
集合框架中的接口具体实现,例如ArrayList,HashSet,HashMap等
算法
在实现了集合框架接口的对象身上完成计算的方法。Java提供了集合框架的工具类Collections,它实现了对集合排序的多种算法。
二.List接口
ArrayList对数组进行了封装,实现了可变长数组,采用和数组相同的储存方法。
LinkedList采用链表储存方式。
ArrayList
import Java.util.List;
import java.util.ArrayList;
puoblic class ListDemo{
public static void main(String [] args){
List list = new ArrayList();
for(int i=0;i<3;i++){
list.add("Hello");
}
String a = (String)list.get(0);
}
}
//List集合定义时不需要指定大小,也不用指定集合中保存的数据类型
//List接口的add(Object o)方法的参数类型为Object,即使调用时传入其他类型,但系统认为是Object类型,所以用get方法获取元素是必须进行强制类型转换
//获取List集合的元素时使用get方法并传入下标,然后强制转化为实际类型
//使用remove,contains,indexOf等方法时应该重写类的equals方法
三.迭代器iterator
所有集合接口和类都没有提供相应都遍历方法,而是把遍历交给迭代器Iterator完成。它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
Collection接口的iterator()方法返回一个Iterator。
//Iterator接口两个方法
boolean hasNext()//判断是否存在另一个可访问的元素
Object next()//返回要访问的下一个元素
四.泛型集合
泛型有效的解决了上面提到的集合的add()方法的弊端,使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换,并且如果把非指定类型对象放入集合,会出现编译错误。
import java.util.ArrayList;
import java.util.List;
public class m1 {
public static void main(String [] args){
Student stu1 = new Student("Tom",10);
Student stu2 = new Student("Aim",11);
//泛型集合
List<Student> list = new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
//get()方法不需要再强制类型转换
Student student = list.get(1);
System.out.println("学生2:" + student.getName() + " " + student.getAge());
}
}
class Student{
String name;
int age;
public String getName(){
return name;
}
public int getAge(){
return age;
}
public Student(String name,int age){
this.name = name;
this.age = age;
}
}