6.8.5 Collections和Arrays
Collection 接口: 集合上级接口,Set/List 存储值
Collections 类 : Collection集合帮助类,类似于Arrays【数组帮助类】
addAll(Collection c)
sort(List l)
sort(List l , Comparator c)
binarySearch(list l , T target)
reverse (List l)
//...
6.8.6 HashMap
Map集合的实现类,线程不安全,效率高,速度快
底层结构:数组+链表+红黑树【jdk8+】
键值对存储 【key-value】,key没有下标,不能重复,唯一的 value可以重复,但无下标
构造方法:
new HashMap<K,V>();//16
new HashMap<K,V>(C);//C
new HashMap<K,V>(Map M);//16
HashMap<Integer, String> map = new HashMap<Integer, String>();
方法:
方法名 | 含义 | 参数 | 返回值 |
put(k,v) | 增加键值对【k不存在】 | k 键 v值 | v |
put(k,v) | 修改键值对【k存在】 | v | |
size() | 集合大小 | int | |
remove(k) | 根据key删除键值对 | ||
get(k) | 根据key返回值 | k | v |
keySet() | 返回所有的键 | Set<K> | |
containsKey(Object key) | |||
containsValue(Object value) |
练习:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class map01 {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<Integer, String>();
//增加
map.put(1, "jack");
map.put(2, "jack");
map.put(3, "rose");
System.out.println(map);
//修改 覆盖
map.put(1, "tom");
System.out.println(map);
//大小
System.out.println(map.size());
//删除jack
map.remove(2);
map.remove(1,"jack");
System.out.println(map);
//获取
System.out.println(map.get(1));
//允许null
System.out.println(map.get(4));
System.out.println(map);
//获得所有键
Set<Integer> keys = map.keySet();
//遍历显示
for(Integer key :keys) {
System.out.println(key+"="+map.get(key));
}
//迭代器显示
Iterator<Integer> it = keys.iterator();
while(it.hasNext()) {
Integer key = it.next();
System.out.println(key+"="+map.get(key));
}
}
}
例子:
定义一个Map集合,存储老师信息,键是教师号,值是老师对象【姓名 性别 讲授科目】
1.增加4个老师 1- 于老师【JAVA】 2-刘老师【JAVA】 3-管老师【数据库】 4-殷老师【前端】
2.修改管老师的科目为JAVA
3.获取刘老师的信息
4.查询所有JAVA老师的信息
5.查询所有男老师的信息
6.删除殷老师
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class map02 {
public static void main(String[] args) {
HashMap<Integer, Teacher> teacher =new HashMap<Integer, Teacher>();
Set<Integer> keys = teacher.keySet();
teacher.put(1, new Teacher("于老师","女","JAVA"));
teacher.put(2, new Teacher("刘老师","男","JAVA"));
teacher.put(3, new Teacher("管老师","男","数据结构"));
teacher.put(4, new Teacher("殷老师","男","前端"));
//修改
for (Integer key : keys) {
if(teacher.get(key).getName().equals("管老师")) {
teacher.get(key).setType("JAVA");
}
System.out.println(key + "=" + teacher.get(key));
}
//获取刘老师的信息
for (Integer key : keys) {
if(teacher.get(key).getName().equals("刘老师")) {
System.out.println("刘老师 "+key + "=" + teacher.get(key));
}
}
//System.out.println(teacher.get(2));
//查询所有JAVA老师的信息
for (Integer key : keys) {
if(teacher.get(key).getType().equals("JAVA")) {
System.out.println("JAVA"+key + "=" + teacher.get(key));
}
}
//查询所有男老师的信息
for (Integer key : keys) {
if(teacher.get(key).getSex().equals("男")) {
System.out.println("男老师" + " " + teacher.get(key));
}
}
//删除殷老师
//遍历法
int k=0;
for (Integer key : keys) {
if(teacher.get(key).getName().equals("殷老师")) {
k=key;
break;
}
}
teacher.remove(k);
System.out.println(teacher);
//迭代法
Iterator<Integer> it = keys.iterator();
while(it.hasNext()) {
int key = it.next();
if(teacher.get(key).getName().equals("殷老师")) {
it.remove();
}
}
System.out.println(teacher);
}
}
class Teacher {
private String name;
private String sex;
private String type;
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;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Teacher(String name, String sex, String type) {
super();
this.name = name;
this.sex = sex;
this.type = type;
}
public Teacher() {
super();
}
@Override
public String toString() {
return "[name=" + name + ", sex=" + sex + ", type=" + type + "]";
}
}
例子2:
HashMap实现元素 个数统计,数组{10, 20,10,50,70}遍历[key元素本身value次数]
public class TestMap2 {
public static void main(String[] args) {
int[] a = {20,40,20,10,20,10,50,70};
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int max = 0, k = -1;
for (int i = 0; i < a.length; i++) {
if(map.containsKey(a[i])) {
//修改值
map.put(a[i], map.get(a[i]) + 1);
}else {
//新增
map.put(a[i], 1);
}
if(max < map.get(a[i])) {
max = map.get(a[i]);
k = a[i];
}
}
System.out.println(k + "=" + map.get(k));
}
}
6.9 日期类【java.util】
Data表示特定的瞬间,精确到毫秒。
Data类中的大部分方法都已经被Calendar类中的方法所取代。
Date
SimpleDateFormat //日期格式化
Calender //日历
TimeStamp
6.9.1 Date 日期类
日期类: java.util.Date java.sql.Date继承
public class Date extends Object implements Serializable, Cloneable, Comparable<Date>{
}
构造方法:
new Date(); // 获得系统当前时间
new Date(long l) ; // l时间毫秒,通过距离1970-1-1时间毫秒差值生成距离时间
方法:
getTime() ; //获得距离1970-1-1时间差
6.9.2 SimpleDateFormat 日期格式转化类
java.txt包中用于格式化日期的
![](https://i-blog.csdnimg.cn/blog_migrate/a9cd00571432bd5a20057e147f1a225a.jpeg)
构造方法:
new SimpleDateFormat(String pattern); //构造日期模型 pattern参考上表
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a E");
方法:
format(日期) 返回格式后的字符串 //日期->串
parse(字符串) 返回字符串对应格式的日期 //串->日期
练习:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class data {
public static void main(String[] args) {
Date d =new Date();
// System.out.println(d);
// System.out.println(d.getTime()); //毫秒
//固定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a E");
// System.out.println(sdf.format(d)); //返回格式后的字符串
sdf = new SimpleDateFormat("yyyy-MM-dd");
String birth = "1998-07-29";
try {
System.out.println(sdf.parse(birth));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/54bcd1892b1aa4a63eacb1ca19349375.png)
6.9.3 Calendar 日历类
日历类,抽象类,不能实例化对象。构造方法 : protected Calendar(){}
方法:
getInstance() Calendar 获取日历实例
set(...); //设置日历
get(阈值)
练习:
import java.util.Calendar;
public class date2 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2023, 2, 8, 20, 02);
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONDAY));
System.out.println(c.get(5));
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/a9c0e787b904f1422fa6726cfb280e5c.png)