Java 在ArrayList中查找最大值(可能有多个最大值)
我想在ArrayList中找到保存最大值的索引。我想保持数字的顺序,换句话说,不排序,因为我想跟踪什么索引有什么值。这些值来自随机数生成器,并且可能有两个或多个索引共享相同的最大值 示例ArrayList: 12,78,45,78 溶液中的0,1,2,3Java 在ArrayList中查找最大值(可能有多个最大值),java,arraylist,Java,Arraylist,我想在ArrayList中找到保存最大值的索引。我想保持数字的顺序,换句话说,不排序,因为我想跟踪什么索引有什么值。这些值来自随机数生成器,并且可能有两个或多个索引共享相同的最大值 示例ArrayList: 12,78,45,78 溶液中的0,1,2,3 public static List<Integer> maxIndices(List<Integer> l) { List<Integer> result = new ArrayLis
public static List<Integer> maxIndices(List<Integer> l) {
List<Integer> result = new ArrayList<Integer>();
Integer candidate = l.get(0);
result.add(0);
for (int i = 1; i < l.size(); i++) {
if (l.get(i).compareTo(candidate) > 0) {
candidate = l.get(i);
result.clear();
result.add(i);
} else if (l.get(i).compareTo(candidate) == 0) {
result.add(i);
}
}
return result;
}
关于解决方案:
public static List<Integer> maxIndices(List<Integer> l) {
List<Integer> result = new ArrayList<Integer>();
Integer candidate = l.get(0);
result.add(0);
for (int i = 1; i < l.size(); i++) {
if (l.get(i).compareTo(candidate) > 0) {
candidate = l.get(i);
result.clear();
result.add(i);
} else if (l.get(i).compareTo(candidate) == 0) {
result.add(i);
}
}
return result;
}
看起来您基本上没有编写任何代码来执行请求的任务@马特·鲍尔这就是我问的原因。我需要帮助来做这件事。我已经考虑过散列…摆脱将事物声明为ArrayList的习惯,如果它必须是列表,那么就将其声明为列表。@BevynQ我不想要列表。我想要一个ArrayList,所以我不理解您的评论。看起来您基本上没有编写任何代码来执行请求的任务@马特·鲍尔这就是我问的原因。我需要帮助来做这件事。我已经考虑过散列…摆脱将事物声明为ArrayList的习惯,如果它必须是列表,那么就将其声明为列表。@BevynQ我不想要列表。我想要一个ArrayList,所以我不理解你的评论。如果我理解正确,它是在添加当前索引的值,如果它是最大值?因此,如果我只想要索引本身具有最大值,那么我只需要做:index.addi;?是的,我的错。它应该是index.addi而不是index.addlist.getii如果我理解正确,它是在添加当前索引的值,如果它是最大值?因此,如果我只想要索引本身具有最大值,那么我只需要做:index.addi;?是的,我的错。它应该是index.addi,而不是index.addlist.geti
public static List<Integer> maxIndices(List<Integer> l) {
List<Integer> result = new ArrayList<Integer>();
Integer candidate = l.get(0);
result.add(0);
for (int i = 1; i < l.size(); i++) {
if (l.get(i).compareTo(candidate) > 0) {
candidate = l.get(i);
result.clear();
result.add(i);
} else if (l.get(i).compareTo(candidate) == 0) {
result.add(i);
}
}
return result;
}