/**
* 有一个字符串数组,我们要对这个字符串数组取别名,以使得字符串数组中,每个字符串都是不相同的,规则如下
* 依次遍历字符串数组,如果是第一次出现,则别名为本身,如果重复出现,则别名为字符串加n,n从1开始递增,
* 需要确保别名在已经便利的字符串中不重复
* @author lenovo
*
*/
public class Ceshi {
public static void main(String[] args) {
String[] str ={"aaa","bbb","cccc","bbb","bbb","ddd","aaa"};
for (int i = 0; i < str.length; i++) {
int flag=0;
for (int j =i+1; j < str.length; j++) {
if(str[i]==str[j]){
flag++;
str[j]=str[j]+flag;
}
}
}
for (int i=0;i<str.length;i++){
System.out.print(str[i]+",");
}
}
}
打印结果:
aaa,bbb,cccc,bbb1,bbb2,ddd,aaa1,
//上面的结果可以但是String类型的字符串比较不能用==,应该用equals
代码如下:
public class ArrString2 {
public static void main(String[] args) {
String[] strArra = {"abc","abc","abc","abcd","abcd","abcde","abc","abc","abc","abcd","abcd","abcde"};
String[] strOtherName = new String[strArra.length];
for (int i = 0; i < strArra.length; i++) {//遍历原始数组
for (int j = 0; j < strOtherName.length; j++) {//遍历别名数组
if(strArra[i].equals(strOtherName[j]) ){//在别名数组中已经存在原始数组中的某个元素
int count = 0;//计数变量
for (int i2 = 0; i2 < i; i2++) {//遍历原始数组中已经取过别名的的元素
if(strArra[i2].equals(strOtherName[j])){
count ++;//遍历原始数组中已经取过别名的的元素中和当前别名数组中的元素值相等时,计数count加1
}
}
if(count > 0){
strOtherName[i] = strArra[i]+count;
}
break;
}else{
strOtherName[i] = strArra[i];
}
}
}
for (String string : strArra) {
System.out.print(string+" ");
}
System.out.println();
for (String string : strOtherName) {
System.out.print(string+" ");
}
}
}
执行结果:
原始数据: abc abc abc abcd abcd abcde abc abc abc abcd abcd abcde
执行后结果:abc abc1 abc2 abcd abcd1 abcde abc3 abc4 abc5 abcd2 abcd3 abcde1