NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 集合框架 **课堂代码:** ~~~java package com.dodoke.demo6; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class CollectionStudy { public static void main(String[] args) { /** * List<E>泛型 list = new ArrayList<E>(); */ //对于集合的构建,底层使用是数组来构建集合,说明集合中保存的也是同种类型的数据 //List list = new ArrayList();//完成没有使用泛型list集合的构建 List<Student> list = new ArrayList<Student>();//强制性的约束该集合中只能存放String类型的内容 Student xcl = new Student("徐春林","j12101",23); Student lwx = new Student("陆文鑫","j12102",25); Student ck = new Student("曹凯","j12103",23); Student gjn = new Student("高峻楠","j12104",25); //添加数据 list.add(xcl); list.add(lwx); list.add(ck); list.add(gjn); //删除数据 list.remove(ck);//该方法属于重载的方法。可以传入对象名,也可以传入集合中的索引 //list.remove(2); //获取数据(查询) Student xs = new Student("徐shuang","j12105",23); list.add(xs); Student obj = list.get(3); //修改数据 obj.setName("徐爽"); System.out.println(list); //此时完成对数据的四大基本操作:增删改查 //对数据进行遍历修改-for循环 for(int i = 0; i < list.size(); i++) {//size()返回集合长度 Student stu = list.get(i); if(stu.getName().equals("高峻楠")) { stu.setAge(23); } } System.out.println(list); //对数据进行遍历修改-foreach循环 for(Student stu : list) { if(stu.getName().equals("高峻楠")) { stu.setAge(27);//要注意在集合中也是可以用foreach循环对集合内容进行修改 } } System.out.println(list); //对集合进行遍历删除 /*for(int i = 0; i < list.size(); i++) {//size()返回集合长度 Student stu = list.get(i); if(stu.getName().equals("陆文鑫")) { list.remove(i);//这样实现其实是有问题的 System.out.println(list.size()); } }*/ //通常使用迭代器去对集合进行遍历删除 //step 1: 创建迭代器 Iterator<Student> it = list.iterator(); //step 2: 设置迭代内容的循环 while(it.hasNext()) {//hasNext()判断是否迭代到最后一个元素 Student stu = it.next();//next()返回正在进行迭代的元素 if(stu.getName().equals("陆文鑫")) { it.remove();//注意使用的是it,迭代器中的删除方法。删除之后,相应的会反馈到集合中 } } System.out.println(list); } } ~~~ ~~~java package com.dodoke.demo6; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapStudy { public static void main(String[] args) { /** * Map<key,value> map = new HashMap<key,value>(); */ Student xcl = new Student("徐春林","j12101",23); Student lwx = new Student("陆文鑫","j12102",25); Student ck = new Student("曹凯","j12103",23); Student gjn = new Student("高峻楠","j12104",25); Map<String, Student> map = new HashMap<String, Student>();//初始化完成map集合 //添加数据 //注意:为了保证数据能够正确获取,key的值必须是唯一的 map.put("j01", xcl); map.put("j02", lwx); map.put("j03", ck); map.put("j04", gjn);//如果键值相同,那么后传入的元素会覆盖之前的元素 //获取数据(使用get方法,传入对应的键值) System.out.println(map.get("j03")); System.out.println("+++++++++++++++++++++++++"); //删除数据 map.remove("j03"); //修改数据 Student obj = map.get("j04"); obj.setAge(23); //遍历map-采用foreach循环 Set<String> set = map.keySet();//keySet方法以set集合的形式返回map集合的key System.out.println(set); for(String key : set) { System.out.println(map.get(key)); } System.out.println("=============================="); //遍历map-采用迭代器 //迭代key集合 Iterator<String> it = set.iterator(); while(it.hasNext()) { String key = it.next(); //根据key获取对应的value值 if(key.equals("j01")) { it.remove(); } } System.out.println(map); } } ~~~ ~~~java package com.dodoke.demo6; public class Student { private String name; private String code; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, String code, int age) { super(); this.name = name; this.code = code; this.age = age; } public Student() { super(); } @Override public String toString() { return "Student [name=" + name + ", code=" + code + ", age=" + age + "]"; } } ~~~