我有一个Object数组列表。
List<Object[]> lFiles = new ArrayList<Object[]>();
我希望对此列表进行排序,我不确定实现它的最佳方法是什么。我试过Comparator
,但我没有得到如何做到这一点。我正在使用这种技术,因此我可以将Iterator传递给testNG中的dataProvider。
任何人都可以判断是否有其他好的方法可以将列表用作testNG中的数据提供者。
完整方法
@DataProvider( name = "gFile" )
//generated
public static Iterator<Object[]> getGenerated()
{
List<Object[]> lFiles = new ArrayList<Object[]>();
listf( path + "generated/",
lFiles );
Collections.sort( lFiles,
new Comparator<Object>()
{
public int compare( Object o1,
Object o2 )
{
return compare( o1.toString(),
o2.toString() );
}
} );
return lFiles.iterator();
}
public static void listf( String directoryName,
List<Object[]> lFiles )
{
File directory = new File( directoryName );
// get all the files from a directory
File[] fList = directory.listFiles();
for( File file : fList )
{
if( file.isFile() )
{
if( file.getName().endsWith( ".java" ) )
lFiles.add( new Object[] { file.getName() } );
}
else if( file.isDirectory() )
{
listf( file.getAbsolutePath(),
lFiles );
}
}
}
答案 0 :(得分:2)
如果您想使用Comparator
进行排序,可以执行类似以下代码的操作。
static void test () {
List<Object[]> lFiles = new ArrayList<>();
Collections.sort(lFiles , new Comparator<Object[]>() {
@Override
public int compare(Object[] o1, Object[] o2) {
// Write the logic how two array will compare.
return 0;
}
});
}