1、集合 Connection 接口:List 接口序列 Queue接口队列 Set接口集 List实现类ArrayList LinkedList Queue实现类LinkedList Set 实现类是HashSet ; 另外List 可以精确控制插入某个元素或者删除某个元素; Connection定义了可用于操作List Queue Set 接口的增删改查的方法 ;List 有插入元素的方法add() 和获取元素的方法 get();
2 Map 接口常用实现类 HashMap 以键值对存储;
3 List 和 Queue序列是有序可以重复的Set 集合无序不可以重复 与数组的区别是数组的大小是固定的而集合的容量是可以扩展的,数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型来访问对应映射的元素;
常用的增删改查的例子是学生选课:
首先创建一个Student类 id name私有 属性,类型String 另外一个存储课程的集Set courses 这里由于Set集是不可以重复的 而List 是重复的 ,所以采用了Set集来存储不重复的课程;然后封装 id name ,创建构造方法 public Student (id ,name)this.id=id ,this.name=name,this.courses=new HashSet();
,构造方法的创建是为了不用对类的属性一个一个赋值,而在构造函数的重载给属性的值
创建Course类 使用属性 Sting id name ,封装 ,两个参数的构造函数和不带参数的构造函数;
创建一个备选课程类 ListTest 存放课程的List courseToSelect 对象无参构造方法this.courseToSelet =new ArrayList();
首先增加课程 ,Coursel c1=new Course(“1”,“java”)可以new 多个 然后courseToSelect.add(c1)方法 或者courseToSelect.add(0,c1);
也可以Course[] courses={new Course("2","C"),new Course("3","PHP")} ,courseToSelect.addAll(Arrays.asList(courses));
取课程,要有类型转换,对象存入序列的时候类型变为Object ,Course temp =(Course)courseToSelect.get(0) 可以打印验证;
访问集合中的元素,1 for 方法 2 foreach 方法 3 集合迭代器方法
A for(int i=0;i<courseToSelect.size();i++)Course temp =(Course)courseToSelect.get(i) 打印temp.id temp.name
B
for(Object obj:courseToSelect) Course temp=(Course)obj; 打印temp.id temp.name
C 集合的iterator()方法获取iterator实例, Iterator<Course> it=courseToSelect.iterator();
while(it.hasNext()){
Course cr=it.next();
打印cr.id cr.name
}
修改List中的元素 courseToSelect.set(2,new Course("7","jsp"));
删除元素 Course[] cour ={ (Course)courseToSelect.get(2),(Course)courseToSelect.get(3)} courseToSelect.removeAll(Arrays.asList(cour));
附代码
说明 iterator 是个接口,依赖集合获取实例,通过it.hasNext() 和it.next()来判断是否有值和取值,foreach 是个循环语句,可以看做是for和iterator的结合;