我需要使用Java以相反的顺序运行List.
所以这是前进的地方:
for(String string: stringList){
//...do something
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用for each语法以相反的顺序迭代stringList ?
为了清楚起见:我知道如何以相反的顺序迭代列表但是想知道(出于好奇心)如何在每个样式中执行它.
有没有办法确定循环是否最后一次迭代.我的代码看起来像这样:
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for(int i : array)
{
builder.append("" + i);
if(!lastiteration)
builder.append(",");
}
Run Code Online (Sandbox Code Playgroud)
现在问题是我不想在最后一次迭代中附加逗号.现在有一种方法可以确定它是最后一次迭代还是我坚持使用for循环或使用外部计数器来跟踪.
我遍历一个对象数组,并希望根据它的'id'属性删除其中一个对象,但我的代码不起作用.
foreach($array as $element) {
foreach($element as $key => $value) {
if($key == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($element);//this doesn't work
unset($array,$element);//neither does this
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议.谢谢.
这三种方法之间的性能差异(如果有的话)是什么,都用于将数组转换为另一个数组?
foreacharray_maplambda/closure函数array_map'静态'功能/方法为了使自己清楚,让我们看看这些例子,都做同样的事情 - 将数字数组乘以10:
$numbers = range(0, 1000);
Run Code Online (Sandbox Code Playgroud)
的foreach
$result = array();
foreach ($numbers as $number) {
$result[] = $number * 10;
}
return $result;
Run Code Online (Sandbox Code Playgroud)
用lambda映射
return array_map(function($number) {
return $number * 10;
}, $numbers);
Run Code Online (Sandbox Code Playgroud)
使用'static'函数映射,作为字符串引用传递
function tenTimes($number) {
return $number * 10;
}
return array_map('tenTimes', $numbers);
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?我将很高兴听到上述案例之间的所有差异,以及为什么应该使用其他人而不是其他人的任何输入.
有没有办法forEach在Java 8中构建一个使用索引进行迭代的方法?理想情况下,我喜欢这样的事情:
params.forEach((idx, e) -> query.bind(idx, e));
Run Code Online (Sandbox Code Playgroud)
我现在能做的最好的事情是:
int idx = 0;
params.forEach(e -> {
query.bind(idx, e);
idx++;
});
Run Code Online (Sandbox Code Playgroud) 首先,我理解90%的应用程序中性能差异完全不相关,但我只需要知道哪个是更快的构造.那......
目前在网上提供的信息令人困惑.很多人说foreach很糟糕,但从技术上来说它应该更快,因为它假设使用迭代器简化了数组遍历的编写.迭代器,再次假设更快,但在PHP中也显然死得很慢(或者这不是PHP的东西?).我在谈论数组函数:next()prev()reset()等等,如果它们是偶数函数而不是那些看起来像函数的PHP语言特性之一.
为了缩小这个范围:我在以超过1的步长遍历数组时没有兴趣(也没有负步骤,即反向迭代).我也对从任意点到任意点的遍历不感兴趣,只有0到长度.我也没有看到定期操作超过1000个键的数组,但我确实看到一个数组在应用程序的逻辑中被遍历了多次!另外,对于操作,主要是字符串操作和回声.
以下是一些参考站点:
http://www.phpbench.com/
http://www.php.lt/benchmark/phpbench.php
我到处听到的内容:
foreach很慢,因此for/ while更快foreach复制它迭代的数组; 为了使它更快你需要使用引用$key = array_keys($aHash); $size = sizeOf($key);
for ($i=0; $i < $size; $i++)foreach这是我的问题.我写了这个测试脚本:http://pastebin.com/1ZgK07US,无论我运行脚本多少次,我得到这样的东西:
foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
Run Code Online (Sandbox Code Playgroud)
简而言之:
foreach比foreach参考更快foreach 比...更快 forforeachfor比哈希表更快谁能解释一下?
PHP版本5.3.0
我是多维数组中的新手,这让我很烦恼.
我的数组如下:
$fields = array(
"names" => array(
"type" => "text",
"class" => "name",
"name" => "name",
"text_before" => "name",
"value" => "",
"required" => true,
)
)
Run Code Online (Sandbox Code Playgroud)
然后我得到一个函数检查是否填写了这些输入,如果需要的话.
function checkForm($fields){
foreach($fields as $field){
if($field['required'] && strlen($_POST[$field['name']]) <= 0){
$fields[$field]['value'] = "Some error";
}
}
return $fields;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是这一行
$fields[$field]['value'] = "Some error";
Run Code Online (Sandbox Code Playgroud)
我想更改原始数组的内容,因为我正在返回它,但是如何在foreach循环中获取当前数组的名称(本例中的名称)?
我正在查看一些代码片段,我发现多个元素在一个节点列表上调用一个函数,并将forEach应用于一个空数组.
例如,我有类似的东西:
[].forEach.call( document.querySelectorAll('a'), function(el) {
// whatever with the current node
});
Run Code Online (Sandbox Code Playgroud)
但我无法理解它是如何工作的.任何人都可以解释我在forEach前面的空数组的行为以及它是如何call工作的?