Добавление чего-либо в список arraylist

#java #arrays #string #arraylist

Вопрос:

поэтому я пытаюсь добавить что-то в список arraylist, но каждый раз, когда я использую .add, он выдает ошибку, из-за которой я не знаю, почему это происходит.Ошибка возникает в файле artistaMusica.add(newTag). Кто — нибудь знает, почему это неправильно ?

Вот в чем ошибка :

 'add(pt.ulusofona.aed.deisiRockstar2021.Song)' in 'java.util.ArrayList' cannot be applied to '(java.lang.String)'
 

Вот мой код:

  public static void ADD_TAGS(ArrayList<Song> artistaMusica,String artista,String newTag){

        long start = System.currentTimeMillis();
        

        String tempArtist = "";

        for(int i = 0 ; i < artistaMusica.size() ; i  ) {
            tempArtist = artistaMusica.get(i).getnomeArtista().replace("']", "").replace("['", "").trim();

            if  (artista.equals(tempArtist)) {

                artistaMusica.add(newTag);

                System.out.println(artista " | "   newTag );
            }
        }

        long end = System.currentTimeMillis();
        System.out.println("(took " (end-start) " ms)n");
    }

 

Комментарии:

1. Вы пытаетесь добавить строковый тип в список типа Песня.

2. Итак, как я могу добавить строку newTag в список arraylist ?

3. Ты не можешь. Если строка newTag является атрибутом класса Song, то вы можете сделать artistaMusica.add(новая песня(newTag)). Однако песня класса может иметь другие атрибуты, которые вам потребуется учитывать. В принципе, вы можете добавить только песню в список массивов

Ответ №1:

Похоже, вы пытаетесь найти подходящую песню во входном списке, а затем добавить новый тег к этой песне, а НЕ к списку песен (при условии, что в классе есть получатель List<String> getTags() Song ).

 public static void addTag(ArrayList<Song> artistaMusica, String artista, String newTag) {

    long start = System.currentTimeMillis();

    for (Song song : artistaMusica) {
        String artistName = song.getnomeArtista()
                    .replace("']", "").replace("['", "").trim();

        if (artista.equals(artistName)) {
            // add tag to the matching song
            song.getTags().add(newTag);

            System.out.println(artista " | "   newTag );
        }
    }

    long end = System.currentTimeMillis();
    System.out.println("(took "   (end - start)   " ms)n");
}
 

Комментарии:

1. То , как вы говорите, помогает, но оно продолжает выдавать ошибки, потому что функция статична, и когда я ставлю песню.getTags() статичной, она перестает распознавать add(newTag);. Ошибка, когда является нестатической : На нестатический метод » getTags()» нельзя ссылаться из статического контекста. И ошибка, когда я вставил песню.getTags() статический : Не удается разрешить метод «добавить» в «Строку»

2. Есть предположение, на мой ответ: при условии наличия геттер List<String> getTags() в классе композиции при сохранении бирки на композицию в виде строки, получатель может выглядеть String getTags() и то было бы лучше иметь метод в Song классе, чтобы добавить тег song.addTag(String newTag); , пожалуйста, имейте в виду, что вы не предоставили полную информацию о своих занятиях и, следовательно, невозможно обеспечить 100% копипаст-готовое решение для вашего конкретного случая.