排序列表<object []>

时间:2016-10-14 17:45:28

标签: java sorting collections testng

我有一个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 );
            }
        }
    }

1 个答案:

答案 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;
        }
    });
}