Добрый день! Я решила задачу, но мне бы хотелось разобраться, почему валидатор не принял решение ниже:
public static void main(String[] args) throws IOException { //В метод main приходит список аргументов.

       Map<ZipEntry, ByteArrayOutputStream> zipEntryMap = new HashMap<>();

       try (ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(args[1]))) {
           ZipEntry entry;

           while ((entry = zipInputStream.getNextEntry()) != null) {
               ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
               int len;
               byte[] buffer = new byte[1024];

               while ((len = zipInputStream.read(buffer)) > 0) {
                   outputStream.write(buffer, 0, len);
               }
               zipEntryMap.put(entry, outputStream);
           }
       }

       try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(args[1]))) {
           File file = new File(args[0]);
           ZipEntry newEntry = new ZipEntry("new/" + file.getName());
           zipOutputStream.putNextEntry(newEntry);
           Files.copy(file.toPath(), zipOutputStream);

           zipEntryMap.forEach((e, b) -> {
               if (!e.getName().equals("new/" + file.getName()))
                   try {
                       ZipEntry zipEntry = new ZipEntry(e);
                       zipOutputStream.putNextEntry(zipEntry);
                       zipOutputStream.write(b.toByteArray());
                       zipOutputStream.closeEntry();

                   } catch (IOException ex) {
                       throw new RuntimeException(ex);
                   }
           });
       }
   }
Валидатор не пропускает по проверке "В ZipOutputStream нужно записать все остальное содержимое, которое было вычитано из ZipInputStream", то есть он видит проблему от 27 сроки, где имя entry сравнивается. Если в zipEntryMap передать String, т. е. сделать
zipEntryMap.put(entry.getName, outputStream);
и дальше работать со String ( в 27 строке, где сравнение) то валик ругаться перестаёт. Но какая ему, по сути, разница, на каком этапе я запрашиваю имя entry? Почему это влияет на результат?