一、集合框架
如果不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用JAVA集合框架
二、JAVA集合框架提供了一套性能优良、使用方便的接口和类,它们位于JAVA.UTIL包中
1、Iterator:迭代器
2、Collection:集合框架接口
3、Map:集合框架接口
4、List与Set:Collection的子接口
5、ArrayList与LinkedList为List的实现类
6、HashSet与TreeSet为Set的实现类
7、HashMap与TreeMap为Map的实现类
8、Collections与Arrays:算法
三、JAVA集合框架包含的内容
Collection:接口存储一组不唯一,无序的对象
List:接口存储不唯一,有序的对象
Set:接口存储唯一,无序的对象
Map:接口存储一组键值对象,提供kdy到value的映射
四、List接口的实现类
1、ArrayList实现长度可变的数组,在内存中分配连续的空间。遍历元素和随访问元素的效率比较高
2、LinkedList采用链表存储方式。插入、删除元素进效率比较高
3、遍历ArrayList的方法:1)、普通for循环;2)、增强for循环;3)、迭代器
4、遍历LinkedList的方法:1)、普通for循环;2)、增强for循环;3)、迭代器
5、遍历Set的方法:1)、增强for循环;2)、迭代器;3)集合.foreach(System.out::println);
五、Set接口存储一组唯一,无序的对象
HashSet是Set的实现类
Set存储对象的引用
六、Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作,最常用的实现类的HashMap
Hashtable键不可为空,Hashmap键可以为空;
1、Map接口常用方法
·
2、Map集合遍历
方法1:通过迭代器Iterator实现遍历
方法2:增强型for循环
方法3:键值对
作业:
package com.java_student;
/**
* 2019-2-22
*/
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class StuTest {
public static void main(String[] args) {
Scanner cxj = new Scanner(System.in);
Student stu1 = new Student("陈历","男");
Student stu2 = new Student("吴蕊","女");
Student stu3 = new Student("吴燕婷","女");
Student stu4 = new Student("刘金","男");
Map<String, Student> m = new HashMap<String, Student>();
m.put("CL", stu1);
m.put("WL", stu2);
m.put("WYT", stu3);
m.put("LJ", stu4);
System.out.println(m.remove("CL"));//通过键删除,返回值
System.out.println(m.remove("WL", stu2));//通过键值删除
//遍历所有键与值
Set<String> set1 = m.keySet();
for(String str : set1) {
System.out.print("学员的简称:"+str+"\t");
System.out.println(m.get(str));
}
System.out.println(m.containsKey("WL"));//判断是否存在键为"WL"的值
System.out.println(m.containsValue(stu2));//判断是否存在值为"stu2"
//遍历所有值
Collection<Student> co = m.values();
for(Student stu : co) {
System.out.println(stu);
}
//遍历所有键
Set<String> set = m.keySet();
for(String str : set) {
System.out.println("各个学员的简称:"+str);
}
//查询是否有输入的的键的值
System.out.print("请输入要查询的学员英文简称:");
String t = cxj.next();
if(m.containsKey(t)) {
System.out.println(t+"对应的性名是学员"+m.get(t).getName()+",性别是:"+m.get(t).getSex());
}else {
System.out.println("无此学员!");
}
}
}
package com.java_student;
/**
* 学员类
* @author Administrator
*
*/
public class Student {
private String name;//学员姓名
private String sex;//学员性别
public Student() {}
public Student(String name, String sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "学员:" + name + "\t性别:" + sex;
}
}
结果示例: