import java.util.ArrayList;
public class Test {
private String[] data = { "A", "A", "B", "C", "C", "D", "D", "D" };
// 存储分类好的数据元素。
private ArrayList<Group> groups = new ArrayList<Group>();
// 核心的算法实现。
public void find() {
// 游标index
int index = 0, j = 0;
while (index < data.length) {
Group group = new Group();
group.title = data[index];
String t = group.title;
ArrayList<String> children = new ArrayList<String>();
for (j = index; j < data.length; j++) {
String child = data[j];
if (t.equals(child)) {
// 同时记录该重复出现的元素在原数组中的下标j,便于查验、评估结果。
children.add(child + "@" + j);
} else {
break;
}
}
// 往后推进游标index
index = j;
group.children = children;
groups.add(group);
}
}
// 输出结果。
private void print() {
for (int i = 0; i < groups.size(); i++) {
Group g = groups.get(i);
System.out.println(g);
}
}
private class Group {
public String title;
public ArrayList<String> children;
// 结果。
@Override
public String toString() {
String str = "组" + title + ": ";
for (int i = 0; i < children.size(); i++) {
str += children.get(i) + " ";
}
return str;
}
}
public static void main(String args[]) {
Test t = new Test();
t.find();
t.print();
}
}
JavaShowAlgorithm-找出数组中相同的元素
最新推荐文章于 2022-07-19 14:14:23 发布