Tag: 迭代

迭代string中所有字符的最快方法

在Java中,迭代string中所有字符的最快方法是: String str = "a really, really long string"; for (int i = 0, n = str.length(); i < n; i++) { char c = str.charAt(i); } 或这个: char[] chars = str.toCharArray(); for (int i = 0, n = chars.length; i < n; i++) { char c = chars[i]; } 编辑: 我想知道的是,如果在长时间迭代期间重复调用charAt方法的代价最终小于或大于在开始时对toCharArray执行单个调用的成本,然后直接访问数组迭代。 如果有人能够为不同的string长度提供一个稳健的基准,那么记住JIT预热时间,JVM启动时间等等,而不是两次调用System.currentTimeMillis()之间的区别。

将recursionalgorithm转换为迭代algorithm的devise模式

是否有任何通用的启发式,技巧,窍门或常见devise范例可用于将recursionalgorithm转换为迭代algorithm? 我知道这是可以做到的,我想知道这样做是否有值得记住的做法。

使用Python对文件进行迭代

我有一个问题来理解迭代文件,在这里我继续我在解释器上input的结果: >>> f = open('baby1990.html', 'rU') >>> for line in f.readlines(): >>> print(line) >>> … >>> … all the lines from the file appear here >>> … 当我尝试迭代同一个打开的文件时,我什么也没有! >>> f = open('baby1990.html', 'rU') >>> for line in f.readlines(): >>> print(line) >>> >>> 根本没有输出,要解决这个我要closures()文件,然后打开它再次阅读! 这是一个正常的行为?

为什么Java的迭代器不是可迭代的?

为什么Iterator接口不能扩展Iterable ? iterator()方法可以简单地返回this 。 这是故意的还是仅仅是Javadevise师的疏忽? 能够像这样使用迭代器的for-each循环将是方便的: for(Object o : someContainer.listSomeObjects()) { …. } 其中listSomeObjects()返回一个迭代器。

如何在PHP中生成多个数组中的项目的所有组合

我试图find几个数组中的项目的所有组合。 数组的数量是随机的(这可以是2,3,4,5 …)。 每个数组中的元素数量也是随机的 例如,我有3个数组: $arrayA = array('A1','A2','A3'); $arrayB = array('B1','B2','B3'); $arrayC = array('C1','C2'); 我想生成一个3 x 3 x 2 = 18组合的数组: A1,B1,C1 A1,B1,C2 A1,B2,C1 A1,B2,C2 A1,B3,C1 A1,B3,C2 A2,B1,C1 A2,B1,C2 … 问题是创build一个具有可变数量的源数组的函数…

我如何迭代NSArray?

我正在寻找标准习惯用法迭代NSArray。 我的代码需要适合OS X 10.4+。

recursion比循环更快吗?

我知道recursion有时候比循环更清洁,而且我不会问什么时候应该使用recursion迭代,我知道还有很多问题。 我问的是,recursion比循环更快吗? 对我来说,似乎总是可以改进一个循环,并使其比recursion函数更快地执行,因为循环没有经常设置新的堆栈帧。 我特别关注recursion是否是处理数据的正确方法,例如在二叉树中的某些sorting函数中,recursion是否更快。

iterrows是否有性能问题?

使用大pandas时,我注意到性能很差。 这是别人经历的吗? 是否特定于iterrows,并应该避免这个函数的特定大小的数据(我正在2-3万行)? 这个关于GitHub的讨论让我相信这是在数据框中混合dtypes时造成的,但是下面这个简单的例子表明,即使在使用一个dtype(float64)的时候它也存在。 这在我的机器上需要36秒钟: import pandas as pd import numpy as np import time s1 = np.random.randn(2000000) s2 = np.random.randn(2000000) dfa = pd.DataFrame({'s1': s1, 's2': s2}) start = time.time() i=0 for rowindex, row in dfa.iterrows(): i+=1 end = time.time() print end – start 为什么vector化的操作应用得这么快? 我想必须有一些逐行迭代。 我不知道如何在我的情况下不使用iterrows(这将保存将来的问题)。 因此,如果您始终能够避免这种迭代,我将不胜感激。 我正在根据不同数据框中的数据进行计算。 谢谢! —编辑:我想运行的简化版本已被添加到下面— import pandas as pd […]

并发修改exception:添加到ArrayList

问题发生在 Element element = it.next(); 包含该行的这段代码在OnTouchEvent for (Iterator<Element> it = mElements.iterator(); it.hasNext();){ Element element = it.next(); if(touchX > element.mX && touchX < element.mX + element.mBitmap.getWidth() && touchY > element.mY && touchY < element.mY + element.mBitmap.getHeight()) { //irrelevant stuff.. if(element.cFlag){ mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY)); element.cFlag = false; } } } 所有这些都在synchronized(mElements)里面,其中mElements是一个ArrayList<Element> 当我触摸一个Element ,它可能会激活cFlag ,它会创build另一个具有不同属性的Element ,这些属性会在不到一秒的时间内从屏幕上消失。 这是我创造粒子效果的方法。 我们可以调用这个“粒子”的crack […]

如何通过地图的C ++地图循环?

我将如何通过C ++中的std::map循环? 我的地图被定义为: std::map< std::string, std::map<std::string, std::string> > 例如,这可以保存这样的数据: m["name1"]["value1"] = "data1"; m["name1"]["value2"] = "data2"; m["name2"]["value1"] = "data1"; m["name2"]["value2"] = "data2"; m["name3"]["value1"] = "data1"; m["name3"]["value2"] = "data2"; 我怎样才能通过这个地图循环访问各种值?