JAVA语言学习-Day5
集合
应用场景
- 
无法预测存储数据的数据 
- 
同时存储具有一对一关系的数据 
- 
需要进行数据的增删 
- 
数据重复问题 
体系结构
- 
Collection:List、Queue、Set 
- 
Map:HashMap 
List
有序且可重复,ArrayList、LinkedList
- 
ArrayList底层是由数组实现的 
- 
动态增长 
- 
在列表尾部插入或删除数据非常有效 
- 
更适合查找和更新元素 
- 
ArrayList中的元素可以为null 
方法
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.size();//列表中元素个数
list.get(0);//获取第一个元素
list.remove(0);//移除第一个元素
list.remove("aaa");//移除元素"aaa"
Set
元素无序并且不可以重复的集合,被称为集
HashSet
- 
HashSet是Set的一个重要实现类,被称为哈希集 
- 
HashSet中的元素无序并且不可以重复 
- 
HashSet中只允许有一个null元素 
- 
具有良好的存取和查找性能 
Iterator(迭代器)
HashSet a = new HashSet();
a.add("a");
a.add("b");
//插入重复数据,失败但不会报错
Iterator i = a.iterator();
while(i.hasNext()) {
    System.out.println(i.next());
}
Map
- 
Map中的数据是以键值对(key-value)的形式存储的 
- 
key-value是以Entry类型的对象实例存在的 
- 
可以通过key值快速的查找value 
- 
一个映射不能包含重复的键 
- 
每个键最多只能映射到一个值 
HashMap
- 
基于哈希表的Map接口实现 
- 
允许使用null值和null键 
- 
key值不允许重复 
- 
HashMap中的Entry对象是无序排列的 
线程
进程是指可执行程序并存放在计算机存储器的一个指令序列,它是一个动态执行的过程
线程的创建
- 
创建一个Thread类,或者一个Thread子类的对象 
- 
创建一个Runnable接口的类的对象 
- 
Java为线程提供10个优先级,默认为5,数字越大优先级越高 
- 
优先级常量也可用来表示: - 
MAX_PRIORITY:线程的最高优先级10 
- 
MIN_PRIORITY:线程的最低优先级1 
- 
NORM_PRIORITY:线程的默认优先级5 
 
- 
class MyThread extends Thread{
    private String name;
    public MyThread(){}
    public MyThread(String name){
        super(name);
        this.name = name;
    }
    
线程的状态
新建、可运行(就绪)、运行、阻塞、终止

synchronized关键字
synchronize关键字用在
- 
成员方法 
- 
静态方法 
- 
语句块 
I/O流
文件可认为是相关记录或放在一起的数据的集合
常用方法
File f1 = new File("C:\\");
File f2 = new File(f1,"url");
f1.isDirectory();//判断是否是目录
f1.isFile();//判断是否是文件
f1.Absolute();//判断是否绝对路径
f1.getPath();//获取相对路径
f1.getAbsolutePath();//获取绝对路径
f1.getName();//获取文件名
if(!f1.exists){//判断目录不存在
    f1.mkdir();//创建目录
    f1.mkdirs();//创建多级目录
    try{
        f2.createNewFile();
    }catch(IOException e){
        e.printStackTrace();
    }
}
- 
绝对路径:从盘符开始的路径 
- 
相对路径:从当前路径开始的路径 
字节流
- 
字节输入流 - 
InputStream - 
FileInputStream:文件输入流 
- 
PipedInputStream:管道输入流 
- 
FilterInputStream:过滤器输入流 - 
PushbackInputStream:回压输入流 
- 
BufferedInputStream:缓冲输入流 
- 
DataInputStream:数据输入流 
 
- 
- 
ObjectInputStream:对象输入流 
- 
SequenceInputStream:顺序输入流 
- 
ByteArrayInputStream:字节数组输入流 
- 
StringBufferInputStream:缓冲字符输入流 
 
- 
 
- 
- 
字节输出流 - 
OutputStream - 
FileOutputStream:文件输出流 
- 
PipedOutputStream:管道输出流 
- 
FilterOutputStream:过滤器输出流 - 
PrintStream:格式化输出流 
- 
BufferedOutputStream:缓冲输出流 
- 
DataOutputStream:数据输出流 
 
- 
- 
ObjectOutputStream:对象输出流 
- 
ByteArrayOutputStream:字节数组输出流 
 
- 
 
- 
//FileInputStream 返回值-1表示达到文件末尾
FileInputStream fis = new FileInputStream(url);
int n = 0;//读取文件
while((n=fis.read())!=-1){
    System.out.print((char)n);
}
byte[] b = new byte[100];
fis.read(b);
System.out.print(new String(b));
fis.close();
//FileOutputStream
FileOutputStream fops = new FileOutputStream(url,true);//true追加内容,不覆盖
fops.write(50);
fops.write("a");
fops.close();
缓冲流
- 
缓冲输入流:BufferedInputStream 
- 
缓冲输出流:BufferedOutputStream 
FileOutputStream fos = new FileOutputStream(url);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(50);
bos.write("a");
bos.flush();
FileInputStream fis = new FileInputStream(url);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read();
(char)bis.read();
fos.close();
bos.close();
fis.close();
bis.close();
字符流
- 
字符输入流Reader - 
BufferedReader - LineNumberReader 
- 
CharArrayReader 
- 
StringReader 
- 
InputStreamReader - FileReader 
- 
PipedReader 
- 
FilterReader - PushbackReader 
 
- 
- 
字符输出流Writer - 
BufferedWriter 
- 
CharArrayWriter 
- 
StringWriter 
- 
OutputStreamWriter - FileWriter 
- 
PipedWriter 
- 
FilterWriter 
 
- 
- 
字符缓冲输入流:BufferedReader 
- 
字符缓冲输出流:BufferedWriter 
//字节字符转换流
FileInputStream fis = new FileInputStream(url);
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isr);
int n = 0;
char[] c = new char[10];
while((n=isr.read())!=-1){
    System.out.print((char)n);
}
while(n=isr.read(c)!=-1){
    String s = new String(c,0,n);
    System.out.print(s);
}
FileOutputStream fos = new FileOutputStream(url);
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
while(n=isr.read(c)!=-1){
    osw.write(c,0,n); //字符输出流
    osw.fluse();
}
while(n=br.read(c)!=-1){//字符缓冲流读
    bw.write(c,0,n); //字符缓冲流写
    bw.fluse();
}
fis.close();
isr.close();
br.close();
fos.close();
osw.close();
bw.close();
对象的序列化和反序列化
序列化:把java对象转换为字节序列的过程
反序列化:把字节序列恢复为java对象的过程
- 
创建一个类,继承Serializable接口 
- 
创建对象,将对象写入文件 
- 
从文件读取对象信息 - 
对象输入流ObjectInputStream 
- 
对象输出流ObjectOutputStream 
 
- 
public class Obj1 implements Serializable{}//对象类继承接口
Obj1 obj = new Obj1("","",100);//构造方法创建对象
FileOutputStream fos = new FileOutputStream(url);//创建输出文件对象
ObjectOutputStream oos = new ObjectOutputStream(fos);//创建输出流对象
oos.writeObject(obj);//将对象写入文件,实现持久化存储
oos.flush();
FileInputStream fis = new FileInputStream(url);
ObjectInputStream ois = new ObjectInputStream(fis); 
obj obj_1 = (obj)ois.readObject();
fos.close();
oos.close();
fis.close();
ois.close();
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号