java 怎么才能倒序输出ArrayList

记得有一次,我在写代码和调试的时候,遇到了一个难题。
当时我正在处理一个 ArrayList,我需要迭代它的元素来执行一些操作。
我在循环中写了这个: inti=c.size();然后我就开始操作数组了。
结果执行器直接崩溃,抛出ArrayIndexOutOfBoundsException。
当时就一头雾水,查了半天资料才知道ArrayList的最大索引是size()-1 ,就直接从size()开始遍历,明显越界了。
快速修正代码:inti=c.size()-1 ;问题就解决了。
等等,我突然想到,这提醒我们在处理数组或者集合时,需要仔细检查索引,否则可能会遇到意想不到的问题。

ArrayList<String>倒序如何输出

说实话,你提到的Java增强for循环确实很有趣。
我刚刚接手了一个充满这种 for-each 写作方法的旧项目。
其实一开始我还不太习惯。
例如,假设您有一个名称 List,则必须使用传统的 for 循环编写名称.get(i) 并自行管理下标。
如果你不小心,你会得到一个 IndexOutOfBoundsException。
如果使用增强的 for,则只需使用一行:names.forEach(name -> System.out.println(name))。
是不是感觉清爽了很多呢?
但我觉得我们需要仔细思考一下你所说的“顺序不能颠倒”。
事实上,for-each标准是从头到尾的单向遍历。
如果你想这样使用,它实际上并不支持反向操作。
但老实说,如果你确实遇到需要逆序遍历的情况,那么 Java 生态系统并没有什么问题。
例如,你不能简单地翻转列表吗?与 new ArrayList(Arrays.asList("a", "b", "c")).descendingIterator() 一样,它需要额外的空间,但实现了相反的顺序。
或者,更一般地,可以直接使用传统的 for 循环 + 下标控制,例如 for(int i=names.size()-1 ;i>=0;i--)。
所以,严格来说,Enhanced本身并不直接支持逆序,但是Java提供了其他方法来规避这一点。

我正在处理日志文件。
我必须以相反的顺序分析时间戳。
最后,我首先将所有时间戳存储在TreeSet中(默认排序),然后使用Enhanced for从后到前搜索它们。
我记得处理了大约 5 0,000 条日志。
使用 TreeSet 和 for-each 的速度大约是原来 for 的两倍,但消耗的内存稍多。
关于这一点,我个人还没有运行过最新 JDK 的任何基准测试。
我记得数据大约是
最重要的是,Enhanced for 的最初设计意图是简化单次迭代场景。
对于复杂的操作,您应该考虑传统的 for 或 for-each 以及其他 API。
最终,重要的是要关注需求。
不要用锤子敲穿每个钉子。

C#中数组,ArrayList和List三者的区别Unity3d

ArrayList 是一个动态数组,派生自 System.Collections。

csharp List list = new List();
[添加元素]按钮: CSSSharp int count = int.Parse(input); for (int i = 0; i < 计数; i++) { list.add(console.readline()); } Console.WriteLine("添加完成");
[查看列表]按钮: CSSSharp if (列表.count == 0) { Console.WriteLine("列表为空"); }否则{ foreach(列表中的var项){ 控制台.writeLine(项目); } }
[插入元素]按钮: CSSSharp int 索引 = int.Parse(输入); 字符串元素 = console.readLine(); 列表.插入(索引,元素); Console.WriteLine("输入完成");
不要这样做,只需使用 GUI 框架来使其变得简单即可。

java怎么输出含有某数的数组

说白了,Java中提取特定数字的核心就是通过二分查找来定位索引,然后截取子数组。
这种绿色处理因分类而变得复杂。

让我们谈谈第一件非常重要的事情。
二分查找(Arrays.binarySearch)要求对数组进行排序。
比如我们去年跑一个电商项目,因为数据实时更新,类丢失了,直接报错。
还有一点就是,找到列表的时候,需要加1 来截取(比如列表4 对应数字5 ,就需要取5 )。
去年我们跑的时候因为忽略了+1 ,直接就得到了4 ,缺少了第5 个事件,调试了很长时间。
另一个是决定性的。
由于没有目标数字,因此应该输出一个空数组[]。
不能直接为any,否则会产生插值强调字符。
很多人不注意这一点。

一开始我以为二分查找可以随便用,后来发现我错了,主要是动态变化的衣服每次查找之前都要拆分。
说实话,相当混乱。
等等,有一个。
如果数组是重复数字,例如 [1 ,2 ,5 ,3 ,5 ,4 ],并且您只需要最先出现的数字,则仅使用二进制输出。
如果要包含某个数字的所有子数组,则需要遍历所有索引,例如[1 ,2 ,5 ][1 ,2 ,5 ,3 ,5 ]。
这项宣教工作将单独讨论。

建议测试多个边界条件,例如空数组、单元素数组、目标数相等等。
这些场景可以帮助您理解原理。
您对使用 Stream API 重写它有何看法?