CharNum类
package com.dd;
public class CharNum implements Comparable<CharNum>{
private char count ; //字符
private int num =1; //出现次数
public CharNum(char count) {//重载构造方法
this.count=count;
}
public char getCount() {
return count;
}
public void setCount(char count) {
this.count = count;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return count + "(" + num + ")";
}
@Override
public int compareTo(CharNum o) {
if(this.num == o.getNum()) { //出现次数一致,比较unicode码值
return this.count - o.getCount();
}else {
return this.num -o.getNum();
}
}
}
CharNumArray类
package com.dd;
public class CharNumArray {
private static CharNum[] array = new CharNum[0];
//单例模式
private CharNumArray() {
}
private static CharNumArray instance = new CharNumArray();
public static CharNumArray getinstatnce() {
return instance;
}
public void add(char count) {
if(count =='\n' ||count=='\r') {
return ;
}
boolean exists=false;
int i =0;
for(;i<array.length;i++) {
CharNum temp = array[i];
if(temp ==null) {
break;
}
if(count==temp.getCount()) {
array[i].setNum(array[i].getNum()+1);
exists = true;
break;
}
}
if(!exists) {
if(i>=array.length) {
ensurelength(i);
}
CharNum temp = new CharNum(count);
array[i] =temp;
}
}
//排序方法
public void sort() {
for(int i=1;i<array.length;i++) {
for(int k=0;k<array.length-i;k++ ) {
if(array[k] !=null && array[k+1]!=null) {
if(array[k].compareTo(array[k+1])<0) {
CharNum temp = array[k];
array[k]=array[k+1];
array[k+1]=temp;
}
}
}
}
}
//扩容方法
private void ensurelength(int length) {
int len = array.length*2+1;
CharNum [] cn = new CharNum[len];
for(int i=0;i<array.length;i++) {
cn[i]=array[i];
}
array=cn;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for(int i=0;i<array.length;i++) {
if(array[i]!=null) {
sb.append(array[i].toString()+",");
if((i+1)%6==0) {
sb.append("\n");
}
}
}
sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
}
测试类
package com.dd;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Test {
public static void main(String[] args) throws IOException, IOException {
File ff = new File("a.txt");
CharNumArray ca= CharNumArray.getinstatnce();
if(ff.exists()) {
try(Reader r =new BufferedReader(new FileReader(ff))){
int kk =-1;
while((kk=r.read())!=-1) {
ca.add((char)kk);
}
}
ca.sort();
System.out.println(ca);
}
}
}