热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Java中的ArrayList中找到两个索引之间的最大值

我正在尝试在ArrayList中的两个索引之间找到最大值。我对编码非常陌生,经常被

我正在尝试在ArrayList中的两个索引之间找到最大值。我对编码非常陌生,经常被卡住。我已经编写了一种方法来查找整个ArrayList的最大值,但是当我尝试编写一种在ArrayList的两个索引之间查找并找到最大值的方法时,我得到的就是整个数组列表的最大值。 / p>

这是在整个ArrayList中找到最大值的方法:

public int findMaxReadingIndex() {
int maxValue = (int) sensorReadings.get(0).getvalue();
int maxIndex = 0;
int i = 0;
for (SensorReading sensorReading : sensorReadings) {
if (sensorReading.getvalue() > maxValue) {
maxValue = (int) sensorReading.getvalue();
maxIndex = i;
}
i++;
}
return maxIndex;
}

这是应该在我的startIndex和endIndex之间找到最大值的方法。在这种情况下,我希望startIndex为5,endIndex为13:

...

public int findMaxReadingIndex1(int startIndex,int endIndex) {
startIndex = (int) sensorReadings.get(5).getvalue();
endIndex = (int) sensorReadings.get(13).getvalue();
int maxValIndex = 0;
for (SensorReading sensorReading : sensorReadings) {
if (startIndex maxValIndex = findMaxReadingIndex();
}
}
return maxValIndex;
}

...

感谢您的帮助!



tl; dr

IntStream // Handy utility method for producing a stream of integers.
.range( 100,120 ) // Generate a stream from 100 to 119. Half-open approach means we go up to,but do not include,the limit of 120.
.boxed() // Convert an `IntStream` to a `Stream`.
.collect( Collectors.toList() ) // Collect the elements from this stream,feeding them into a newly instantiated `List`.
.subList( 5,13 ) // Return a `List` of a subset of elements from the first list.
.stream() // Produce a `Stream` of the elements in that `List`.
.max( Comparator.comparingInt( Integer :: intValue ) ) // Compare each element as an `int`. Perhaps there is a better way to do this comparison,to avoid auto-boxing from object to primitive.
.get() // Extract a value from an `Optional`.


  

112


让我们开始喜欢使用流。

首先,我们的演示需要一系列Integer对象。

我们可以循环填充这样的List

List numbers = new ArrayList <>( 20 );
for ( int i = 100 ; i <120 ; i++ )
{
numbers.add( i );
}

或者在这部分也使用流,作为寻找最大值的墙。

List numbers =
IntStream
.range( 100,120 )
.boxed()
.collect( Collectors.toList() )
;


  

数字= [100、101、102、103、104、105、106、107、108、109、110、111、112、113、114、115、116、117、118、119]

使用Stream::max查找最大值。

接下来,我们使用List::subList从列表中获取所需的元素子集。然后,我们创建该子列表的流。流中的每个元素都通过max进行馈送,在此处比较整数值作为测试。找到的最大值通过调用Optional::get返回。

Integer biggest =
numbers
.subList( 5,13 )
.stream()
.max( Comparator.comparingInt( Integer :: intValue ) )
.get()
;


  

最大= 112


,

类似的事情应该可以解决。

ll in an approximate range (0,2_777_777) with len0=1_111_111
ll in an approximate range (0,2_500_000) with len1=1_000_000
mergeLists: 0.46664454099999997 sec
merge0: 0.2180013780000003 sec
merge1: 0.16215903499999996 sec
ll in an approximate range (0,2_777_777) with len0=1_111_111
ll in an approximate range (-25_000_000,25_000_000) with len1=1_000_000
mergeLists: 0.4489969129999736 sec
merge0: 0.16649408400007815 sec
merge1: 0.1128580580000289 sec
ll in an approximate range (0,22_500_000) with len0=9_000_000
ll in an approximate range (0,22_777_777) with len1=9_111_111
mergeLists: 4.245676940000003 sec
merge0: 1.9906823259999982 sec
merge1: 1.548923153000004 sec

,

好吧,这会让您变得太复杂了,或者我不理解要求。

public int findMaxReadingIndex1(int startIndex,int endIndex)
{
int maxVal = 0;
int maxIndex = 0;
for(int x = startIndex; x <= endIndex; x++)
{
if(sensorReadings.get(x) >= maxVal)
{
maxVal = values[x];
maxIndex = x;
}
}
System.out.println("max value = " + maxVal);
System.out.println("max index = " + maxIndex);
return maxIndex;
}

,

我倾向于认为,像其他答案一样,在这里常规的for循环会更容易,但是要遵循您的方法要说些什么,因为这是您的方法。在我看来,可以稍微调整一下您的原始方法。

public int findMaxReadingIndex1(int startIndex,int endIndex) {
int maxValue = (int) sensorReadings.get(startIndex).getValue();
int maxIndex = startIndex;
int i = 0;
for (SensorReading sensorReading : sensorReadings) {
if (i >= startIndex && i<= endIndex && sensorReading.getValue() > maxValue) {
maxValue = (int) sensorReading.getValue();
maxIndex = i;
}
i++;
}
return maxIndex;
}

然后,如果您不想重复自己,则findMaxReadingIndex()可以使用参数0和sensorReadings.size()-1来调用此方法。


推荐阅读
  • 湍流|低频_youcans 的 OpenCV 例程 200 篇106. 退化图像的逆滤波
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了youcans的OpenCV例程200篇106.退化图像的逆滤波相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • Problemexplanation: ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
author-avatar
敏捷的敏2502921017
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有