Java集合框架都位于Java.util包中java
Java集合框架能够包含三大块内容,对外接口,接口的实现,对集合运算的算法算法
List集合是有序集合,集合中的元素能够重复,访问集合中的元素能够根据元素的索引来访问。编程
Set集合是无序集合,集合中的元素不能够重复,访问集合中的元素只能根据元素自己来访问。数组
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。框架
表示集合的抽象数据类型,例如Collection,List,Set,Map等工具
集合框架中的接口具体实现,例如ArrayList,HashSet,HashMap等this
在实现了集合框架接口的对象身上完成计算的方法。Java提供了集合框架的工具类Collections,它实现了对集合排序的多种算法。code
ArrayList对数组进行了封装,实现了可变长数组,采用和数组相同的储存方法。对象
LinkedList采用链表储存方式。blog
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完成。它隐藏了各类集合实现类的内部细节,提供了遍历集合的统一编程接口。
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() + "\t" + 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; } }