Arraylist基础知识

时间:2014-02-22 23:09:54

标签: java arraylist

  

编写一个接收ArrayList整数作为参数的方法,并返回集合中最大整数的索引

到目前为止,我只需要接收ArrayList整数所需的代码,搜索特定的整数并返回true

有人能告诉我需要int密钥吗?没有它,代码不会工作吗?

public static boolean search (ArrayList<Integer>list, int key) {
    for (int=0 ; i< listsize(); i++)
         if (list.get(i) == key) {
            return true;
         } return false;  
    }

4 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

public int getIndexOfMaxValue(final List<Integer> list)
{
    int maxFound = Integer.MIN_VALUE, value;
    int ret = 0;

    for (int index = 0; index < list.size(); index++) {
        value = list.get(index);
        if (value > maxFound) {
            maxFound = value;
            ret = index;
        }
    }

    return ret;
}

请注意,列表可以具有重复元素,并且此代码将返回找到的第一个最大值的索引。如果您想要最后一个索引,只需在上面的代码中将>替换为>=

答案 1 :(得分:0)

变量key是必需的,因为图示的方法似乎不是查找max的方法,而是返回列表是否包含某个数字的方法。

图示的方法确实存在逻辑错误,因为如果第0个索引不是key,则循环体会立即返回:

if (list.get(i) == key) {
    return true;
}
return false; // <- this should be after the loop

关于分配的方法(我假设它是一个赋值):

  

编写一个接收整数ArrayList作为参数的方法,并返回集合中最大整数的索引。

不,此方法不需要密钥变量。

要编写这样的方法,首先要做的是确保列表不为空。空列表不能有最大索引。

if(list.isEmpty()) {
    return -1; // return a special value indicating the list is empty
}

如果列表为null,那么该检查也将抛出NullPointerException。我们可以检查列表是否为null并返回其他内容,但这是一个可能提供异常信息的情况。

然后你需要保留一个“当前”最高指数的变量。我们可以将其初始化为0,因为我们已经知道列表的大小至少为1。

int indexOfMax = 0;

然后我们将有一个循环,将列表中的每个索引与当前最高索引进行比较,如果该索引处的数字更高,则重新分配它。我们可以从1开始这个循环,因为我们已经知道列表的大小必须至少为1.如果没有其他索引,循环将立即中断。如果列表只有一个数字,那么该数字是最大的数字。

for(int i = 1; i < list.size(); i++) {

然后进行比较和分配:

    if(list.get(i) > list.get(indexOfMax)) {
        indexOfMax = i;
    }
}

最后返回我们的索引。

return indexOfMax;

答案 2 :(得分:0)

  • 首先,您要循环使用i = 2或第2个元素开始的ArrayList(假设列表中包含多个元素),
  • 如果你有1个或少于1个元素,那么它只是跳过循环并返回0索引(第一个元素)。如果是
  • 的元素
  • 如果列表中有多个元素,则将第二个元素中的值与之前的value元素进行比较,如果它更高或相同,则将其设置为highestIntIdx。

public static int search(List list){

    int highestIntIdx= 0;

    for (int i = 1;i<list.size();i++){

        if(list.isEmpty())
            break;

        if (list.get(i) >= list.get(i-1)){
            highestIntIdx = i;
        }
    }
    return highestIntIdx;
   }
}

答案 3 :(得分:-1)

您似乎被要求返回ArrayList中最大整数的索引。

所以你想要实现一个方法liek

package com.snippet;
import java.util.ArrayList;
public class Largest {

public Largest() {
}

public int getIndexOfLargest(ArrayList<Integer> list) {
    int index;

    if (list == null) {
        index = -1;
    } else {
        index = 0;
        for (int i = 1; i < list.size(); i++) {
            if (list.get(i) > list.get(index)) {
                index = i;
            }
        }
    }
    return index;
}

}