Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 嵌套foreach优化_Performance_Loops_Nested - Fatal编程技术网

Performance 嵌套foreach优化

Performance 嵌套foreach优化,performance,loops,nested,Performance,Loops,Nested,我有3个foreach循环嵌套在一起,这可能是性能方面的问题。有没有办法提高效率 虚构的例子: List<User> users; List<Friend> friends; foreach(user in users) { //Find if a user have a friend foreach(friend in friends) { foreach(userFriend in user.friendList)

我有3个foreach循环嵌套在一起,这可能是性能方面的问题。有没有办法提高效率

虚构的例子:

List<User> users;
List<Friend> friends;

foreach(user in users)
{
    //Find if a user have a friend
    foreach(friend in friends)
    {

        foreach(userFriend in user.friendList)
        {
            //find match
            if(friend.name.Equals(userFriend.name)){

                //do stuff
                break;
            }

        }
    }
}
列出用户;
列出朋友;
foreach(用户中的用户)
{
//查找用户是否有朋友
foreach(朋友中的朋友)
{
foreach(user.friendList中的userFriend)
{
//找到匹配项
if(friend.name.Equals(userFriend.name)){
//做事
打破
}
}
}
}

据介绍,使用
for
代替
foreach
可以显著提高性能。这两种方法都值得一试。那么这意味着什么呢,
好友列表的非空性不就意味着用户有朋友了吗?不需要搜索任何东西。或者,如果你所做的事情比看起来更奇怪,用friendList事物的名称创建一个哈希集,然后为每个朋友询问哈希集是否包含他们的名称。示例可能不是最好的:)。但我想知道的是,如果你有一个列表,里面有一个列表,你需要比较一些变量和另一个列表。有没有一种方法可以使这样的情况比任何类型的3个嵌套循环更好。