Java не удаляет указанный c элемент из списка - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время я разрабатываю плагин в Minecraft Spigot. Я не верю, что это проблема с цапфой, но я считаю, что это проблема java. У меня в классе есть метод setInjury (), который должен создать копию списка, удалить элемент из копии и заменить список новым. Странная вещь, это работает. Для одного элемента, в частности, он просто отказывается удалить его. Это удалит другие, но не этот. Я проверил корпус и все. Даже логическое значение из .remove говорит, что оно было удалено, но это не так.

(iStore - это файл конфигурации файла, а store - это мой класс, в котором он находится)

Раньше в операторе if else, но логическое значение внутри remove работает точно так же. Самое странное во всем этом - это то, что оно буквально работало вчера.

List<String> sevs = iStore.getStringList(uuid + "." + section);

for(String s : iStore.getStringList(uuid + "." + section)) {
    boolean isFracture = s.equals("Fracture") && injury.equals("Broken") ;

    if(s.equals(injury)) {
        continue;
    }

    sevs.add("Broken");
    sevs.remove(isFracture ? "Fracture" : "Intact");

    iStore.set(uuid + "." + section, sevs);
    store.saveStore();

}

Мой другой более грязный код, который делает то же самое, чтобы доказать, что он должен его удалить:

    List<String> sevs = iStore.getStringList(uuid + "." + section);
    for(String s : iStore.getStringList(uuid + "." + section)) {
        if(sevs.contains(injury)) {
            return;
        }else if(injury.equals("Broken") && s.equals("Fracture")){
            sevs.add("Broken");
            sevs.remove("Fracture");

          Bukkit.getLogger().info(Boolean.toString(sevs.remove("Fracture"))); //returns true??
            iStore.set(uuid + "." + section, sevs);
            store.saveStore();
        }else{
            sevs.add(injury);
            sevs.remove("Intact");
            iStore.set(uuid + "." + section, sevs);
            store.saveStore();
        }

Список перед запуском кода:

rlegstat: 
 - Cured 
 - Fracture 
//Desired result if injury is equal to broken: 
rlegstat: 
 - Cured 
 - Broken 
//Actual results 
rlegstat: 
 - Cured 
 - Fracture 
 - Broken
...