黑马程序员技术交流社区
标题:
一个关于数组查找的问题
[打印本页]
作者:
呵呵君
时间:
2015-6-26 23:08
标题:
一个关于数组查找的问题
本帖最后由 呵呵君 于 2015-6-26 23:27 编辑
<div class="blockcode"><blockquote> public static void main(String[] args)
{
int arr[]={28,32,2,321,12,3,123,2,123,23,12};
int search=getKey(arr,2);
System.out.println(search);
}
public static int getKey(int []arr,int key)
{
for (int x=0;x<arr.length ; x++)
{
if (arr[x]==key)
{
return x;
}
}
return -1;
}
}
复制代码
[/code]小弟今天练习时无意间敲出了一个含有相同元素的数组,用毕姥爷的方法无法查出第二个元素的索引.想知道在这个方法的基础上,如何查找出数组中所用相同元素的索引.不使用直接输出的情况下,还有其他方法吗?
ps:第一次发帖,语言有点乱.望见谅!
作者:
qxc1281
时间:
2015-6-27 08:35
你可以使用一个数组返回所有的元素的索引
public static void main(String[] args) {
int arr[] = { 28, 32, 2, 321, 12, 3, 123, 2, 123, 23, 12 };
int search[] = getKey(arr,2);
for (int i = 0; i < search.length; i++) {
//如果不为-1则为索引值输出
if(search[i]!=-1){
System.out.print(search[i]+" ");
}
}
}
public static int[] getKey(int[] arr, int key) {
//记录索引值的位置
int temp[] = new int [arr.length];
//初始化所有的索引值为-1
for (int i = 0; i < temp.length; i++) {
temp[i] = -1;
}
//临时变量记录数组目前的位置
int flag = 0;
for (int x = 0; x < arr.length; x++) {
if (arr[x] == key) {
//如果找到索引,存入数组
temp[flag++] = x;
}
}
return temp;
}
复制代码
如果学习到集合的话,可以返回一个List集合
public static void main(String[] args) {
int arr[] = { 28, 32, 2, 321, 12, 3, 123, 2, 123, 23, 12 };
List<Integer> list = getKey(arr, 2);
for (Integer integer : list) {
//所有的索引值
System.out.print(integer+" ");
}
}
public static List<Integer> getKey(int[] arr, int key) {
//记录索引值的位置
List<Integer> list = new ArrayList<Integer>();
for (int x = 0; x < arr.length; x++) {
if (arr[x] == key) {
//如果找到索引,存入数组
list.add(x);
}
}
return list;
}
复制代码
作者:
呵呵君
时间:
2015-6-27 22:40
qxc1281 发表于 2015-6-27 08:35
你可以使用一个数组返回所有的元素的索引
如果学习到集合的话,可以返回一个List集合
十分感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2