package Char;
public class CharNum {
private int num;
private char ch;
public char getCh() {
return ch;
}
public CharNum(char ch) {
this.ch = ch;
this.num = 1;
}
public void addN() {
this.num++;
}
@Override
public String toString() {
return ch + "(" + num + ")";
}
public boolean big(CharNum charNum) {
boolean res = false;
if (this.num > charNum.num)
res = true;
else if (this.num == charNum.num) {
res = this.ch > charNum.ch;
}
return res;
}
}
package Char;
public class ArrayList {
private CharNum []a;
private int count;
public ArrayLisr() {
this(10);
}
public ArrayList(int len) {
a=new CharNum[len];
}
public void show() {
for(int i=0;i<count;i++) {
System.out.println(a[i]+",");
}
}
public void resize() {
CharNum [] aa=new CharNum[a.length*3/2];
System.arraycopy(a, 0, aa, 0, a.length);
this.a=aa;
}
public void add(char ch) {
int exsit=indexOf(ch);
if(exsit>=0)
a[exsit].addN();
else {
a[count++]=new CharNum(ch);
if(count>=a.length)
resize();
}
}
public int indexOf(char ch) {
int res=-1;
for(int i=0;i<count;i++) {
CharNum c=a[i];
if(c.getCh()==ch) {
res=i;
break;
}
}
return res;
}
public void sort() {
for(int i=1;i<count;i++) {
for(int k=0;k<count-i;k++) {
if(a[k].big(a[k+1])) {
CharNum tmp=a[k];
a[k]=a[k+1];
a[k+1]=tmp;
}
}
}
}
}
package Char;
import java.io.FileReader;
import java.io.Reader;
public class Test {
public static void main(String[] args) throws Exception {
ArrayList a=new ArrayList();
try(Reader r=new FileReader("data/calcCharNum.txt")){
int k=-1;
while(true) {
k=r.read();
if(k==-1)
break;
if(k=='\t'||k=='\n'||k=='\r')
k=' ';
a.add((char)k);
}
a.sort();
a.show();
}
}
}