我有一个存储区域名称的ArrayList.我想查看此列表以查找是否来自不同区域的任意人.如果他们来自不同的地区,我会做出决定.我用以下代码实现了这一点.注意,area_IdList和area_IdListduplicate本质上是相同的ArrayList.这个代码是高效的还是任何人都可以建议更高效的代码 提前致谢.
public List<String> area_IdList = new ArrayList<String>();
public List<String> area_IdListduplicate = new ArrayList<String>();
for (int i = 0; i < area_IdList.size(); i++)
{
for (int k = 1; k< area_IdListduplicate.size(); k++)
{
String sa= area_IdListduplicate.get(k);
String sb= area_IdList.get(i);
if (!sa.equalsIgnoreCase(sb))
{
some decision
}
}
}
Run Code Online (Sandbox Code Playgroud)
for (String area : area_IdList)
{
for (String duplicatedArea : area_IdListduplicate)
{
if (!area.equalsIgnoreCase(duplicatedArea))
{
// some decision
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样更有效,更快,而不是通过索引进行迭代.因此,这将逐步检查每个元素中area_IdList的所有元素,area_idListduplicate并且每次它们不是马赫时,将做出此决定.(如果这是你想要达到的目标)
这是一个O(2N)解决方案,需要2N内存,而不是N ^ 2时间和N内存成本.取决于您拥有的物品数量,但此解决方案的成本将远低于N ^ 2解决方案.
Set<String> list=new Set<String>();
for (String area : area_IdList)
{
list.add(area.toLowerCase());
}
for (String duplicatedArea : area_IdListduplicate)
{
if(list.contains(duplicatedArea.toLowerCase())){
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
至于不使用索引,请参阅使用增强的循环语法
| 归档时间: |
|
| 查看次数: |
14430 次 |
| 最近记录: |