一、集合框架
如果不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用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; } }
结果示例: