, поэтому я делаю собственную команду дел для своего бота JDA Discord, и для каждой задачи я хочу, чтобы он автоматически давал им ключи 1, 2, 3 и т. Д. c. Но всякий раз, когда я удаляю задачу, я хочу, чтобы она оставалась в том же порядке: 1, 2, 3, а не 1, 3. Я немного поиграл с ней, и я провел много поисков, но я ничего не могу найти. Спасибо за потраченное время!
package io.github.epicoweo.commands.util;
import java.util.Arrays;
import java.util.List;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import net.dv8tion.jda.api.entities.MessageChannel;
public class ToDo {
private static String[] keys;
private static MessageChannel channel;
public static void run(String action, String item, MessageChannel channel) {
Preferences list = Preferences.userNodeForPackage(ToDo.class);
try {
keys = list.keys();
ToDo.channel = channel;
if(!item.equals("_") && action.equals("create")){
keys = Arrays.copyOf(keys, keys.length+1);
//My attempts at doing this are everywhere, sorry about not commenting, I know my organization is horrific
List<String> keylist = Arrays.asList(keys);
if(!keylist.contains(Integer.toString(keys.length))) {
keys[keys.length-1] = Integer.toString(keys.length);
saveList(keys[keys.length-1], item);
} else {
int i = 1;
for(String k : keys) {
saveList(Integer.toString(i), list.get(k, "none"));
channel.sendMessage("keys[" + (i-1) + "] changed to " + i).queue();
i++;
}
saveList(keys[keys.length-1], item);
}
return;
} else {
channel.sendMessage("Incorrect syntax!").queue();
}
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
public static void run(String action, String key, String item, MessageChannel channel) {
Preferences list = Preferences.userNodeForPackage(ToDo.class);
try {
keys = list.keys();
ToDo.channel = channel;
if(item.equals("_")) {
if(key.equals("_") && action.equals("list")) {
for(String k : keys) {
channel.sendMessage(k + ": " + list.get(k, "none")).queue();
}
return;
} else if(!key.equals("_") && action.equals("remove")) {
removeList(key);
return;
}
} else {
channel.sendMessage("Incorrect syntax!").queue();
}
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
private static void saveList(String key, String item) {
Preferences list = Preferences.userNodeForPackage(ToDo.class);
list.put(key, item);
channel.sendMessage("Successfully created item " + key + ": " + item).queue();
}
private static void removeList(String key) {
Preferences list = Preferences.userNodeForPackage(ToDo.class);
list.remove(key);
channel.sendMessage("Successfully removed item " + key + " from list!").queue();
}
public static void help(MessageChannel channel) {
}
}
РЕДАКТИРОВАТЬ: Кроме того, всякий раз, когда я использую приведенный выше код, он превращает последние две задачи в одну и ту же задачу (не сам ключ, а задача, которая с ним связана). Спасибо!