首先我们定义一个一维数组:
private static String[] arr = {"1", "3", "6", "3", "2", "5", "6", "4", "3", "2", "1", "4"};
我们将一维数组转为ArrayList对象:
private static List<String> list = Arrays.asList(arr);
private static ArrayList<String> arrayList = new ArrayList<>(list);
如图,我们先将第一个元素依次与所有元素比较,得出重复的元素。然后将重复元素取出储存在结果中,剩余的元素组成一个新的数组,进行第一次的运算再次得到重复的元素。以此类推直到数组中的元素被删除完,我们就得到了最后的结果。
下面是代码:
private static void getNum() {
//死循环,在数组remove至无元素时结束。
while (arrayList.size() > 0) {
//元素重复的次数。
int state = 1;
for (int j = 1; j < arrayList.size(); j++) {
//判断两个元素是否相等
if (arrayList.get(0).equals(arrayList.get(j))) {
state++;
}
}
//将元素以及它重复的次数添加到结果集中
endNum.add(new String[]{arrayList.get(0), state + ""});
//查询到重复元素的内容,并将原数组中的元素循环删除。
for (int b = 0; b < Integer.parseInt(endNum.get(endNum.size() - 1)[1]); b++) {
arrayList.remove(endNum.get(endNum.size() - 1)[0]);
}
//遍历打印每次删除后的数组
for (int y = 0; y < arrayList.size(); y++) {
System.out.print(arrayList.get(y) + "-");
}
System.out.println();
}
}
菜鸟一枚,如有不足,请各位大佬多多指教。