0803(023天 输入输出流03 节点流+过滤流)
每日一狗(田园犬西瓜瓜)
复习:
应用场景
- 字节流:针对二进制位文件 (音频,视频)
- 字符流:针对文本文件(txt文件。。。)
节点流
课前小练习(文件的词频统计)
package com.yang1;
import java.io.FileReader;
import java.io.Reader;
public class 课前小练习 {
public static void main(String[] args) {
myRead();
}
// 读取并进行词频统计
public static void myRead() {
ArrayList myArr = new ArrayList(40);
try (Reader in = new FileReader("G:\\蓝鸥\\0704(000天 )\\笔记\\课堂笔记.md")) {
int tmp = 0;
while ((tmp = in.read()) > 0) {
if (tmp == '\n' || tmp == '\r' || tmp == '\t') {
tmp = ' ';
}
myArr.add((char) tmp);
}
} catch (Exception e) {
e.printStackTrace();
}
myArr.sorted();
myArr.show();
}
}
class MyChar {
private char myChar;
private int count;
public MyChar(char myChar) {
this.myChar = myChar;
this.count = 1;
}
// 频次加一
public void plusOne() {
count++;
}
@Override
public String toString() {
return myChar + "(" + count + ")";
}
/
public char getMyChar() {
return myChar;
}
public int getCount() {
return count;
}
}
class ArrayList {
private MyChar[] arr;
private int len;
public ArrayList() {
this(10);
}
public ArrayList(int lenght) {
arr = new MyChar[lenght];
len = 0;
}
// 按照出现频率进行排序
public void sorted() {
for (int i = 1; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (big(j, j + 1)) {
MyChar tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
// 判定是否需要交换
public boolean big(int i, int j) {
boolean res = false;
if (arr[i].getCount() < arr[j].getCount()) {
res = true;
} else if (arr[i].getCount() == arr[j]