问题:有两个长度分别为M和N的数组,用最少的循环次数求出他们中的相同元素。
分析:用容器来解决。将这两个数组分别放在两个ArrayList中,再调用ArrayList的retainAll方法即可。
A.retainAll(B):从A集合中删除B集合中不包含的元素.
实现代码如下:
package com.miaojian.li;
import java.util.ArrayList;
import java.util.Collection;
public class FindFromArray {
public static void main(String[] args) {
int[] array1={1,2,3,4,5,6,7};
int[] array2={2,4,6,8,10,1};
Collection c1=new ArrayList();
Collection c2=new ArrayList();
for(int i=0;i<array1.length;i++) //将array1添加到c1中
{
c1.add(array1[i]);
}
for(int i=0;i<array2.length;i++) //将array2添加到c2中
{
c2.add(array2[i]);
}
c1.retainAll(c2); //从c1集合中删除c2集合中不包含的元素
System.out.println(c1);
}
}
因此总的循环次数是M+N
结果如下 :
[1, 2, 4, 6]
package com.miaojian.li;
import java.io.File;
public class FileList {
public static void main(String[] args) {
File f= new File("d:/software");//待列出的文件目录
tree(f,0);
}
private static void tree(File f, int level)
{
String preStr="";
for(int i=0;i<level;i++)
{
preStr+=" ";
}
File[] childs=f.listFiles();
for(int i=0;i<childs.length;i++)
{
System.out.println(preStr + childs[i].getName());
if(childs[i].isDirectory())
tree(childs[i],level+1);
}
}
}
结果如下图:
DataBase
Mysql
mysqltoolwin32.rar
MySQL_5.5.20_win32_XiaZaiBa.zip
Oracle
Oracle_client_win32.zip
Toad DBA Suite for Oracle 10.5 Commercial.exe
SqlServer
Power Design
powerdesigner125_eval.exe
SQL Server2000
PERSONAL
AUTORUN.EXE
AUTORUN.INF
AUTORUN.INI
BOOKS