## 集合框架
**课堂代码:**
~~~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 + "]";
}
}
~~~
- 课程开始
- 第一课20191008
- 第二课20191009
- HTML
- CSS
- CSS第一课
- CSS第二课
- CSS第三课
- CSS第四课
- CSS第五课
- JavaScript
- Js第一课
- Js第二课
- Js第三课
- Js第四课
- Js第五课
- Js第六课
- Js第七课
- Js-事件模型
- Js-2019-10-31-标准库
- Js-2019-11-01- 标准库
- Js-2019-11-01-Json
- Js-2019-11-01-对象的创建
- Js-2019-11-04-this的使用
- Js-2019-11-05-storage与异常
- Js-2019-11-05-BOM与补充知识点
- Js-2019-11-06-正则表达式和计时器
- jQuery
- jQuery-2019-11-13-初识jQuery
- jQuery-2019-11-14-jQuery节点操作
- jQuery-2019-11-15-jQuery节点操作二
- jQuery-2019-11-16-jQuery效果与动画
- Java
- Java-2019-11-27-变量直接量数据格式运算符
- Java-2019-11-28-流程控制
- Java-2019-12-02-数组
- Java-2019-12-04 面向对象
- Java-2019-12-05-封装
- Java-2019-12-06-深入构造器
- Java-2019-12-09-继承
- Java-2019-12-10-多态
- Java-2019-12-10-包装类
- Java-2019-12-11-final修饰符
- Java-2019-12-11-包装类
- Java-2019-12-11-接口
- java-2019-12-13-设计模式
- Java-2019-12-16-集合框架
- Java-2019-12-18-集合排序
- Java-2019-12-23-常用类学习
- Java-2019-12-25-异常处理
- Java-2019-12-31-内部类详解
