知道非通用ICollection没有提供@echo off
Title Searching for a specific file (name and type) and copy to USB Drive
Mode con cols=90 lines=10 & color 9E
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=2" %%i in ('wmic logicaldisk where "drivetype=2" ^|find /i ":"') do (Set MyUSB=%%i)
set _drive=%MyUSB%
If defined _drive (
cls
echo.
echo ---------------------------------------------------------
echo Your usb key is connected as !_drive!
echo ---------------------------------------------------------
echo.
pause
Goto :search
) ELSE (
cls
color 0C
echo.
echo --------------------------------------------------------------------------
echo Your usb key is not detected, please check it and re-run again this script
echo --------------------------------------------------------------------------
echo.
)
pause
exit
:Search
Cls
echo(
echo --------------------------------------------------------------------------
echo Please Wait a while ....... Searching is in progress .........
echo --------------------------------------------------------------------------
set "LogSearch=%~dp0%~n0.txt"
If exist "%LogSearch%" Del "%LogSearch%"
set Pattern="CAL" "ERROR"
For %%P in (%Pattern%) Do (
Where /R C:\ "*%%~P*.jpg" /F >> "%LogSearch%" 2>&1
If "%ErrorLevel%"=="1" (
Cls
echo(
echo --------------------------------------------------------------------------
echo No file(s^) found with this Pattern
echo --------------------------------------------------------------------------
) else (
for /f "delims=" %%a in ('Type "%LogSearch%"') do (
@echo found file %%a
@Copy /Y %%a !_drive!\
)
)
)
pause & exit
方法,检查给定对象是否已经在集合中的最佳方法是什么?
如果我有两个Contains
:A和B并且想要检查B是否具有A的所有元素,那么最好的方法是什么?我的第一个想法是将A的所有元素添加到HashSet中,然后使用ICollections
检查所有B元素是否在集合中。
答案 0 :(得分:3)
如果我有两个
ICollections
A
和B
,并想检查B
是否包含A
的所有元素,那么最好的方法是什么?完成那个?
让我用集合语言重新解释你的问题。
如果我有两套
A
和B
,并想检查A
是否是B
的子集,那么最好的方法是什么?< / p>
现在很容易看到答案:
https://msdn.microsoft.com/en-us/library/bb358446%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
从HashSet<T>
构建A
,然后使用IsSubsetOf
方法查看A
是B
的子集。
我注意到,如果这些是您必须经常执行的各种操作,那么您应该首先将数据保存在HashSet<T>
集合中。如果两个集合都是散列集,则IsSubsetOf
操作可能更有效。
答案 1 :(得分:0)
A和B想要检查B是否包含A的所有元素
我认为你倒退了。将B添加到HashSet。
HashSet.Contains是O(1)
总的来说,它将是O(n + m)
假设字符串
HashSet<string> HashSetB = new HashSet<string>(iCollecionB);
foreach (string s in iCollecionA)
{
if(HashSetB.Contains(s))
{
}
else
{
}
}
答案 2 :(得分:-2)
Boolean ICollectionContains(ICollection collection, Object item)
{
for (Object o in collection)
{
if (o == item)
return true;
}
return false;
}
或者在扩展表格中:
public static class CollectionExtensions
{
public static Boolean Contains(this ICollection collection, Object item)
{
for (Object o in collection)
{
if (o == item)
return true;
}
return false;
}
}
使用方法:
ICollection turboEncabulators = GetSomeTrunnions();
if (turboEncabulators.Contains(me))
Environment.FailFast(); //How did you find me!