1.集合框架
List: 有序
ArrayList:长度可变的数组,便于查找和随机访问
LinkedList(Node):双向链表,便于插入和删除
Set:不重复
Hashset:HashMap的key和hashCode()和equals()方法共同保证不重复
Map:Entry<k,v>键值对
遍历:List:fori,增强for,迭代器
Set:增强for,迭代器
Map:entrySet(),keySet(),values()
泛型:限定了集合类型的输入和输出
add()/put() addAll()集合之间互相转换
remove()
set()/put()
get()
Collections: CompareAble/new CompareTo{int compare(){} }
public class Student {
private int id;
private String name;
private int score;
public Student() {
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
'}';
}
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public static void main(String[] args) {
Student s=new Student(1,"王菲",56);
Student s1=new Student(2,"李凯",35);
List list=new ArrayList();
list.add(s);
list.add(s1);
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.score-o2.score;
}
});
System.out.println(list);
}}
2.实用类
包装类:方便泛型使用,与String类型的转换
装箱:把基本数据类型变为包装类型
拆箱:把包装类型转为基本数据类型
Integer a=1;//自动装箱
int b=new Integer(12);//自动拆箱
Math类
Random类
枚举类:特殊的类,私有构造,直接写的值都是当前类型
String:底层是字符数组常量,不可改变
indexOf,split,charAt 给对应下标,找到字符,substring(),toCharArray 有中文用这个,getBytes
StringBuffer :线程安全,较慢
append(), toString()
Stringbuilder :单线程订的,较快
Date :UTC时间
SimpleDateFormat:"yyyy-MM-dd HH:mm:ss"
3.io流:InputStream OutputStream Reader Writer
普通流:FileInputStream FileOutStream FileReader FileWriter
转换流:InputStreamReader OutputStream 转换流及字符编码
高级流:
缓冲流:把(字符)流在闲时先一步读取进缓存
二进制流 先把要传输的图像,视频,音频等先放入文件流,再把文件流装入DataInputStream,DataOutputStream
对象流:对象要实现Serializable接口
ObjectInputStream ObjectOutputStream
读取过程:
1.把文件放入文件输入流中
2.read() , read(b)......(放入字符串)
3.关闭流
写入过程:
与上一步基本类似
4.多线程
继承Thread类,实现Runnabel接口
start()和run()的区别:start是真正实现多线程的方法
实现Callable接口:call()方法有返回值(泛型)
FutureTask ft=new FutureTask(Callable接口的实现类的对象)
Thread t=new Thread(ft);
t.start();
ft.get()//获取返回值
5.反射:运行时获取对象,操作对象及其属性和方法(唯一操作不了的就是枚举)
获取类对象:类型.class 对象.get.Class() Class.forName("类的全路径") 最后一个会抛个异常
获取构造方法(getDeclaredConstructor()) newInstance(),方法(getDeclaredMethod("方法名",参数类型) invoke(),属性(getDeclaredField("属性名") set()
权限不够的需要执行 setAccessible(true);
6.xml和json
xml格式:<?xml version="1.0" charset="UTF-8"?>
根标签 一一对应(有开头,有结束)
xml作用:传输数据,配置文件
DOM获取:
1.DocumentBuilderFactory factory=DocumentBuliderFactory.newInstance();
2.DocumentBuilder builder=factory.newDocumentBuilder();
3.Document document=builder.parse("xml路径");
4.Element e=document.getElementsByName("标签名称");
5.e.item(0)
DOM保存:
1.TransformFactory f=TransformFactory.newInstance();
2.Transform tf=f.newTransform();
3.DomSource s=new DomSource(document);
4.StreamResult sr=new StreamResult(writer对象装入目标地址);
5.tf.transform(s,sr);
json:对象要实现Serializable接口
对象转json格式字符串:JSON.toJSONString(对象)
对象转json:JSON.parseObject(json串)
json转对象:JSON.toJavaObject(json对象,java对象类型.class);
7.正则表达式:规则表达式
匹配规则
建议多练