Как сравнить два списка с разными именами, но с одинаковыми фактическими данными - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть 2 списка, которые получили одинаковое содержание, но с разными именами.

У меня есть таблица, которую я загружаю с помощью кнопки «Экспорт», которая загружает файл CSV в мою локальную файловую систему, и я получаю таблицу с использованием селена. Я пытался преобразовать эти списки в «Коллекции», но это не помогло. трюк.

Вот так выглядит мой список CSV:

AuditCsvRow{dateStr='"2019-04-14 11:48"', userStr='"admin"', entityStr='"Users"', actionStr='"Login"', nameStr='"admin"', descriptionStr='"User login successful: admin"', clientIpStr='"192.168.51.35"'}

Этот список загружен с использованием селена:

AuditRow{dateStr='2019-04-14 11:48', userStr='admin', entityStr='Users', actionStr='Login', nameStr='admin', descriptionStr='User login successful: admin', clientIpStr='192.168.51.35', clientIpTxt='192.168.51.35'}
List<AuditRow> uiRowList = new ArrayList<>();
        List<AuditCsvRow>CSVrows = readAuditLogFromCSV(CSV_FILE_PATH);
        uiRowList = auditPage.getAudittable();
 Collection listOne = new ArrayList(Arrays.asList(CSVrows));
        Collection listTwo = new ArrayList(Arrays.asList(uiRowList));

        listOne.equals(listTwo);
private List<AuditRow> readAuditLogFromCSV(String fileName) throws IOException {
        List<AuditRow> rowsList = new ArrayList<>();
        Path pathToFile = Paths.get(fileName);

        try(BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.US_ASCII)){
            String line = br.readLine();
            while(line != null){
                String[] attributes = line.split(",");
                AuditRow auditCsvRow = auditPage.createCsvRow(attributes);
                rowsList.add(auditCsvRow);
                line = br.readLine();
            }
        }
        return rowsList;
    }

1 Ответ

0 голосов
/ 14 апреля 2019

Ответ @Erwin Bolwidt очень хороший, он помогает уменьшить дублирующийся код.Тем не менее, я хотел бы поделиться своим трюком для сравнения таких объектов.

По сути, я бы проанализировал их в Json и сравнил строки

Gson gson = new Gson();
boolean isTheSameData = gson.toJson(CSVrows).equals(gson.toJson(uiRowList));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...