2022年12月8日日志主要内容:
集合框架
常见方法
主代码:
package com.cn;
public class Student {
private String number;
private String name;
public Student() {
}
public Student(String number, String name) {
this.number = number;
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"number='" + number + '\'' +
", name='" + name + '\'' +
'}';
}
}
测试代码
package com.cn;
import java.util.ArrayList;
import java.util.HashMap;
public class T1 {
public static void main(String[] args) {
Student s1 = new Student("LJ1","ds");
Student s2 = new Student("LJ2","ds");
Student s3 = new Student("LJ3","ds");
Student[] stuArray = {s1,s2,s3};
ArrayList<Student>list = new ArrayList<>();
// list.add(s1);
HashMap<String,String>hashMap = new HashMap<>();
hashMap.put("lj1","ds");
hashMap.put("lj2","cv");
//判断原本hashMap中有几条数据?
//一个键值对叫做一条数据
int size = hashMap.size();
System.out.println(size);
String name = hashMap.get("lj1");
System.out.println(name);
hashMap.remove("lj1");
size = hashMap.size();
System.out.println(size);
hashMap.put("lj2","ac");
System.out.println(hashMap.get("lj2"));
}
}
hashmap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)
package com.cn;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class T2 {
public static void main(String[] args) {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("lj1","ds");
hashMap.put("lj2","cv");
hashMap.put("lj3","hh");
//hashMap.put("lj2","hx");
int size = hashMap.size();
System.out.println(size);
System.out.println(hashMap.get("lj2"));
System.out.println("====================================================");
Set<String> strings = hashMap.keySet();
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()){
String key = iterator.next();
String value = hashMap.get(key);
System.out.println(key+" "+value);
}
System.out.println("====================================================");
Set<Map.Entry<String,String>> entries = hashMap.entrySet();
Iterator<Map.Entry<String,String>> iterator1 = entries.iterator();
while (iterator1.hasNext()){
Map.Entry<String, String> entry = iterator1.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+" "+value);
}
}
}
异常体系
异常:指的是程序在执行过程中,出现的非正常的情况, 最终会导致jvm的非正常停止在Java等面向对象的编程语言中, 异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象, Java处理异常的方式是中断处理异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行。
异常分类
异常处理方式
package com.cn;
//异常处理方式
public class T3 {
public static void main(String[] args) {
try{// 监视可能出现异常的代码!
}catch (Exception e){//异常类型1 变量
// 异常
}finally {
}
}
}
throws与throw
throw代表动作,表示抛出一个异常的动作; throws代表一种状态,代表方法可能有异常抛出。throw用在方法实现中,而throws用在方法声明中。throw只能用于抛出一种异常,而throws可以抛出多个异常。
IO
I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统 [1] ,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O,异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。
文件上传
【客户端】输入流,从硬盘读取文件数据到程序中。
【客户端】输出流,写出文件数据到服务端。
【服务端】输入流,读取文件数据到服务端程序。
【服务端】输出流,写出文件数据到服务器硬盘中。
随机文件的访问
RandomAccessFile类不属于流,是Object的子类,但它融合了流类InputStream和OutputStream的功能,即提供了InputStream类似的read()方法,又提供了OutputStream类似的write()方法,还提供了更高级的直接读写各种基本数据类型的读写方法;
seek(long pos) 移动文件指针到指定位置
多线程
多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”