找出字符串中重复次数最多的字符及最少的,帮忙看一下我代码的问题

public class A5 {
//定义一个数组,存储次数,数组长度为字符串长度,找出一个字符与每一个都比较,并计数,找出下标次数出现最多的,求其最大值
public static void main(String[]args){
String a1="abasdcalsjdfasf34asfjsfasf";
int[]counts=new int[a1.length()];
for(int i=0;i<a1.length();i++){
char x1=a1.charAt(i);//拿出字符串中一个字符;
int count=0;

for(int j=0;j<a1.length();j++){
char x2=a1.charAt(j);//拿出字符串中一个字符与第一个字符比较。
    if(x1==x2){
    count++;

        }
    }
counts[i]=count;//计数每次出现的次数放到数组counts中;

//System.out.print(counts[i]);

}
int xiabiao1=0;
int max=counts[0];
for(int i=0;i<counts.length;i++){
   if(counts[i]>max){
       max = counts[i];//找出出现最大次数的,并把下标找出。
       xiabiao1=i;
         }
     }

char str=a1.charAt(xiabiao1);//通过下标找内容.
System.out.println("出现次数最多的字符为"+str+",次数最大为"+max);

for(int j=0;j<counts.length;j++){
if(max==counts[j] && str!=a1.charAt(j)){
     max=counts[j];  
       str =a1.charAt(j); 
       continue;
    }

}
System.out.println("出现次数最多的字符为"+str+",次数最大为"+max);
int xiabiao2=0;
int min=counts[0];
for(int i=0;i<counts.length;i++){
   if(counts[i]<min){
 min =counts[i];
  xiabiao2=i;
   }
}

char str1=a1.charAt(xiabiao2);
System.out.println("出现次数最少的字符为"+str1+",次数最少为"+min);
for(int i=0;i<counts.length;i++){
if(counts[i]==min && str1!=a1.charAt(i)){
counts[i]=min;
str1=a1.charAt(i);
continue;
    }

}
System.out.println("出现次数最少的字符为"+str1+",次数最少为"+min);

}
}

很明显啊,对于存在个数一样多的情况,你没有关注