Java怎样快速分出一个数组中相同元素的下标?
1个回答
展开全部
其实很简单,完全不用用集合,只要一找好就print或组String,多馀的内存也可以省下
public class Run {
private final static int [] temp = {1,2,5,8,6,2,11,15,2,6,2,11,15,5,1,8,6};
public static void main(String[] args) {
Run r = new Run();
r.locateAllAndPrint();
}
private void locateAllAndPrint () {
for (int i = 0; i < temp.length; i++) {
int h = temp[i];
boolean repeated = false;
for (int j = 0; j < i; j++) {
if (temp[j] == h) {
repeated = true;
break;
}
}
if (!repeated) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < temp.length; j++) {
if (h == temp[j]) {
sb.append(", ").append(j);
}
}
sb.delete(0, 2).insert(0, " --> [").insert(0, h).append(']');
System.out.println(sb.toString());
}
}
}
}
解释一下,第一个 j 的 loop是用来防止print重覆的数字
第二个 j 的 loop是用来组一串string,串好了才print,这样可以减少print的次数,delay也可以减少,当然,如果你喜欢的话,你可以直接print,不需要用stringbuffer
public class Run {
private final static int [] temp = {1,2,5,8,6,2,11,15,2,6,2,11,15,5,1,8,6};
public static void main(String[] args) {
Run r = new Run();
r.locateAllAndPrint();
}
private void locateAllAndPrint () {
for (int i = 0; i < temp.length; i++) {
int h = temp[i];
boolean repeated = false;
for (int j = 0; j < i; j++) {
if (temp[j] == h) {
repeated = true;
break;
}
}
if (!repeated) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < temp.length; j++) {
if (h == temp[j]) {
sb.append(", ").append(j);
}
}
sb.delete(0, 2).insert(0, " --> [").insert(0, h).append(']');
System.out.println(sb.toString());
}
}
}
}
解释一下,第一个 j 的 loop是用来防止print重覆的数字
第二个 j 的 loop是用来组一串string,串好了才print,这样可以减少print的次数,delay也可以减少,当然,如果你喜欢的话,你可以直接print,不需要用stringbuffer
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询