集合:
集合概述:java中的集合类:是一个工具类,就像是容器,存储任意数量的具有共同属性的对象
集合的作用:
1.在类的内部,对数据进行组织;
2.简单而快速的搜索大数量的条目
3.有的集合接口,提供了一系列排列有序的元素,并可以在徐磊中那快速的插入或者删除有关元素
4.有的集合接口,提供了映射关系,可以通过关键字(可以 )去快速查找对应的唯一对象,而这个关键字可以是任意类型
(数组和集合的区别 :
1.数组的长度固定,集合长度可变(可以自动扩展)
2.数组只能通过下边访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象)
集合框架的组成:
根接口
Collection:List Queue Set(集:无序不可重复)
Map:HashMap
| Collection接口 | 名称:属性 | 实现类 |
| List | 序列:有序可重复 | ArrayList\LinkedList |
| Queue | 队列:有序可重复 | LInkedList |
| Set | 集:无序不可重复 | HashSet |
Collection接口:
List接口:
List方法及实现
//新建list并且规定其泛型
public static List<Course> coursesToSelect;//测试list的添加方法//list.add// public void add(int index, Object element){}//index添加的位置,element 添加的元素 public void testAdd(){ Course cr1=new Course("1","数据结构"); coursesToSelect.add(cr1); Course temp= (Course) coursesToSelect.get(0); // System.out.println("添加课程:"+temp.name+" 编号为:"+temp.id+" 成功"); Course cr2=new Course("2","c语言"); coursesToSelect.add(0,cr2); Course temp2= (Course) coursesToSelect.get(0); // System.out.println("添加课程:"+temp2.name+" 编号为:"+temp2.id+" 成功"); //数组只有俩个元素不能越界访问下下个元素 /*Course cr3=new Course("3","网络安全"); coursesToSelect.add(-1,cr3);*/ /*coursesToSelect.add(cr1); Course temp0= (Course) coursesToSelect.get(2); System.out.println("添加课程:"+temp0.name+" 编号为:"+temp0.id+" 成功");*/ //按数组添加到list,先定义数组,再使用addAll方法 Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp3= (Course) coursesToSelect.get(2); Course temp4= (Course) coursesToSelect.get(3); // System.out.println("添加了俩门课程:"+temp3.name+"编号为:"+temp3.id+" "+temp4.name+"编号为:"+temp4.id); Course[] course2={new Course("5","高等数学"),new Course("6","爬虫语言")}; coursesToSelect.addAll(2,Arrays.asList(course2)); Course temp5= (Course) coursesToSelect.get(2); Course temp6= (Course) coursesToSelect.get(3); // System.out.println("添加了俩门课程:"+temp5.name+"编号为:"+temp5.id+" "+temp6.name+"编号为:"+temp6.id); }//在使用get方法时,返回的对象为object对象,需要进行转化遍历List集合的三种方法:
//通过get方法for循环遍历
public void testGet(){ System.out.println("——————————现有如下课程可选——————————"); for (int i=0;i<coursesToSelect.size();i++) { //使用了get方法获取的对象都为object类型 Course c=(Course) coursesToSelect.get(i); System.out.println("课程名: "+c.name+" 编号为: "+c.id); } } // 通过迭代器遍历List public void testIterator(){ //新建一个迭代器 Iterator it=coursesToSelect.iterator(); //hasNext()检查是否有元素有返回true while (it.hasNext()){ System.out.println("——————————现有如下课程可选(迭代器)——————————"); for (int i=0;i<coursesToSelect.size();i++) { //使用了get方法获取的对象都为object类型 Course cr=(Course) it.next(); System.out.println("课程名: "+cr.name+" 编号为: "+cr.id); } } } // 通过foreach方法访问集合元素 public void testForeach(){ System.out.println("——————————现有如下课程可选(foreach)——————————"); for (Object obj:coursesToSelect){ Course cr=(Course) obj; System.out.println("课程名: "+cr.name+" 编号为: "+cr.id); } }List 修改数据和删除数据
//通过set方法修改元素
public void testModify(){ coursesToSelect.set(4,new Course("7","毛概")); }//删除//删除单个元素 public void testRemove(){ Course cr= (Course) coursesToSelect.get(4); System.out.println("课程id为:"+cr.id+"名称为:"+cr.name); coursesToSelect.remove(cr); System.out.println("即将删除4上的元素"); coursesToSelect.remove(4); //删除多个元素 System.out.println("即将删除4和5上的元素"); Course[]courses={(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)}; coursesToSelect.removeAll(Arrays.asList(courses)); System.out.println("成功删除课程"); }Map
//新建Map并且添加泛型
public static Map<String,Student> students;//添加数据使用put方法students.put(ID,newStudent);//使用keySet方法返回Map所有键的Set集合 public void testKeySet(){ Set<String>keySet=students.keySet(); //取得students的容量 System.out.println("总共有"+students.size()+"个学生"); //遍历keySet对象,取得每一个键,在用get获取value for (String stuId:keySet){ Student st=students.get(stuId); if (st!=null){ System.out.println("学生:"+st.name+"id:"+st.id); } } }删除Map中的映射
//使用remove方法通过key值删除
public void testRemove(){ while (true){ //提升删除学生id System.out.println("请输入要删除的学生id"); //从键盘获取学生id Scanner console=new Scanner(System.in); String ID=console.next(); Student st=students.get(ID); if (st==null){ //提示id不存在 System.out.println("该id不存在"); continue; } students.remove(ID); System.out.println("成功删除学生:"+st.name); break; } }修改Map中的值
public void testModify(){
//请输入要修改的学生id System.out.println("请输入要修改的学生id"); Scanner console=new Scanner(System.in); while (true){ String stuID=console.next(); Student student=students.get(stuID); if (student==null){ System.out.println("该id不存在"); continue; } System.out.println("当前学生id,所对应的学生为:"+student.name); System.out.println("输入新的学生姓名"); String name=console.next(); Student newStudent=new Student(stuID,name); students.put(stuID,newStudent); System.out.println("修改成功"); break; } }遍历Map集合
//通过entrySet方法遍历Map
public void testEntrySet(){ //通过entrySet方法遍历Map Set<Map.Entry<String, Student>> entrySet=students.entrySet(); for (Map.Entry<String, Student>entry:entrySet){ System.out.print("id:"+entry.getKey()); System.out.print("姓名:"+entry.getValue().name); System.out.println(" "); } }