标签:
两大接口:Collection和Map接口
一、Collection接口:
子接口:1>List(序列):排列有序且可重复,常用实现类:ArrayList(数组序列)
2>Queue(队列):常用实现类:LinkedList(链表)(同时也是List的一个实现类)
3>Set(集合):无序不可重复,常用实现类:HashSet(哈希集)
二、Map接口:
一般靠HashMap类来实现接口
三、存储对象区别:
Collection下的类对象存储为单个元素
Map:HashMap则是以键值对<key-value>成对存储的
下面通过模拟学生选课来进一步解析:
Course类:
package com.zhaixiaobin.collecton; public class Course { private int id; private String name; public int getId() { return id; } public String getName() { return name; } public Course(int id,String name) { this.id=id; this.name=name; } }
Student类:
package com.zhaixiaobin.collecton; import java.util.HashSet; import java.util.Set; public class Students { private int id; private String name; public Set courses; public int getId() { return id; } public String getName() { return name; } public Students(int id,String name) { this.id=id; this.name=name; this.courses=new HashSet(); } }
ListTest类(测试类):
下面代码实现了四种添加元素的方法和两种对添加到集合中元素的遍历:
添加元素:1》使用ArrayList类的add(元素)方法:
形式:ArrayList对象.add();
2》使用ArrayList类的add(int index,元素)方法加到指定下标方法:
形式:ArrayList对象.add(int index,元素);
注意:index不能越界,否则会出现下标越界异常
3》使用ArrayList类的addAll(Arrays.asList(元素数组))方法:
形式:ArrayList对象.addALL(Arrays.asList(元素数组))
4》使用ArrayList类的addALL(int index ,Arrays.asList(元素数组))方法
形式:ArrayList对象.addALL(int index,Arrays.asList(元素数组))
遍历: 1》使用for循环
2》使用迭代器(Iterator)
package com.zhaixiaobin.collecton; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; public class ListTest { public List Coursetoselect; public ListTest() { this.Coursetoselect=new ArrayList(); } public void addTets() { Course cr1=new Course(1,"数据结构"); Coursetoselect.add(cr1);//此时"数据结构"在下标为0的位置 Course temp1=(Course)Coursetoselect.get(0);//获得下标为0的元素即"数据结构" System.out.println("添加了课程:"+temp1.getId()+" "+temp1.getName());//打印输出 Course cr2=new Course(2,"C语言"); Coursetoselect.add(cr2);//此时"c语言"在下标为1的位置 Course temp2=(Course)Coursetoselect.get(1);//获得下标为1的元素即"c语言" System.out.println("添加了课程:"+temp2.getId()+" "+temp2.getName()); // // Course cr3=new Course(3,"操作系统"); // Coursetoselect.add(1,cr3);//这个add方法是将元素填加到指定下标的位置即1,所以此时"操作系统"在下标为1的位置,从而c语言被挤到了下标为2 的位置 // Course temp3=(Course)Coursetoselect.get(2);//此时获得的是c语言 // System.out.println("添加了课程:"+temp3.getId()+" "+temp3.getName()); /* * 使用addAll(Arrays.asList)方法添加 */ Course [] course2={new Course(3, "数据库"),new Course(4,"计算机网络")}; Coursetoselect.addAll(Arrays.asList(course2)); Course temp3=(Course) Coursetoselect.get(2); Course temp4=(Course) Coursetoselect.get(3); System.out.println("添加了两门课程:"+temp3.getId()+" "+temp3.getName()+";"+temp4.getId()+":"+temp4.getName()); /* * 使用addAll(int index,Arrays.asList)将元素数组添加到指定的位置下标下 */ Course [] course3={new Course(5,"大学英语"),new Course(6,"大学物理")}; Coursetoselect.addAll(2, Arrays.asList(course3));//将数组元素添加到下标为2的位置,即原来为数据库的位置 Course temp5=(Course) Coursetoselect.get(2);//获得下标为2的位置,现在是大学英语 Course temp6=(Course) Coursetoselect.get(3);//获得下标为3的位置,现在是大学物理 System.out.println("添加了两门课程:"+temp5.getId()+" "+temp5.getName()+";"+temp6.getId()+":"+temp6.getName()); } /* * 通过for循环遍历添加的元素 */ public void ListGet() { System.out.println("已选课程为:"); for(int i=0;i<Coursetoselect.size();i++) { Course cr=(Course) Coursetoselect.get(i); System.out.println("课程号:"+cr.getId()+" "+"课程名:"+cr.getName()); } System.out.println(); } /* * 通过迭代器来遍历添加的元素 */ public void testIterator() { Iterator it=Coursetoselect.iterator(); System.out.println("已选课程为"); while(it.hasNext()) { Course ctr=(Course) it.next(); System.out.println("课程号:"+ctr.getId()+" "+"课程名:"+ctr.getName()); } } public static void main(String[] args) { ListTest lt1=new ListTest(); lt1.addTets(); lt1.ListGet(); lt1.testIterator(); } }
输出结果:
添加了课程:1 数据结构 添加了课程:2 C语言 添加了两门课程:3 数据库;4:计算机网络 添加了两门课程:5 大学英语;6:大学物理 已选课程为: 课程号:1 课程名:数据结构 课程号:2 课程名:C语言 课程号:5 课程名:大学英语 课程号:6 课程名:大学物理 课程号:3 课程名:数据库 课程号:4 课程名:计算机网络 已选课程为 课程号:1 课程名:数据结构 课程号:2 课程名:C语言 课程号:5 课程名:大学英语 课程号:6 课程名:大学物理 课程号:3 课程名:数据库 课程号:4 课程名:计算机网络
标签:
原文地址:http://www.cnblogs.com/ericjava123/p/5627847.html