首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ArrayList中搜索对象的最优化方法

问在ArrayList中搜索对象的最优化方法
EN

Stack Overflow用户
提问于 2022-03-01 16:37:22
回答 1查看 91关注 0票数 0

我有一个I列表(列表"X"),我试图找到域名。我还有一个Excel文件,其中包含170个带有相应域名的IP 000+条目。

因此,我首先导入Excel文件:$dnsEntries = Import-Excel -Path '.\file.xlsx' -WorksheetName "list"

然后,对于列表"X“中的每个IP,我尝试在$dnsEntries中找到它,这样我就可以得到域名:

代码语言:javascript
复制
foreach($IP in $IPs) {
    $DN=($dnsEntries.Where({$_."Address" -like $IP})).Name
}

不幸的是,每个IP至少需要2秒,我有5000+,所以这需要很长的时间。困扰我的是,Excel可以用一个简单的公式在不到3秒的时间内找到所有的5000+对应的域名。我知道我绝不会和PowerShell走得这么近,但两者之间的差别有多大呢?

我能加快搜索速度吗?

提前谢谢!

编辑:这里是一个可复制的例子。有些IP是不会被匹配的。

代码语言:javascript
复制
$IPs = @("10.10.10.1","10.10.10.5","10.10.10.66","10.10.10.99","10.10.10.235","10.10.10.73","10.10.10.98","10.10.10.56")
$dnsEntries = @(
    @{Address="10.10.10.73";Name="ip1.local"},
    @{Address="10.10.10.98";Name="ip2.local"},
    @{Address="10.10.10.1";Name="ip3.local"},
    @{Address="10.10.10.56";Name="ip4.local"},
    @{Address="10.10.10.235";Name="ip5.local"},
    @{Address="10.10.10.5";Name="ip6.local"},
    @{Address="10.10.10.11";Name="ip7.local"},
    @{Address="10.10.10.81";Name="ip8.local"},
    @{Address="10.10.10.2";Name="ip9.local"}
)

foreach($IP in $IPs) {
    $DN=($dnsEntries.Where({$_."Address" -like $IP})).Name
    Write-Host $DN
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-02 13:04:19

正如其中一个注释所述,我使用以下代码将$dnsEntries从一个ArrayList转换为一个哈希表:

代码语言:javascript
复制
$import = Import-Excel -Path '.\file.xlsx' -WorksheetName "list"
$dnsEntries = @{}

foreach($entry in $import){
    $dnsEntries.Add($entry.Address,$entry.Name)
}

foreach($IP in $IPs) {
    $DN=$dnsEntries[$IP]
    Write-Host $DN
}

它仍然需要很长的时间来转换它,但然后寻找一个域名为一个IP几乎是即时!所以最终它节省了很多时间。

感谢你们的建议!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71311780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档