dataset = [
["route1","car1","alex"],
["route1","car1","boris"],
["route2","car1","alex"],
["route2","car1","boris"],
["route1","car1","john"],
["route3","car2","alex"],
["route1","car2","alex"],
["route1","car3","alex"],
["route1","car2","alex"],
["route1","car2","alex"],
["route3","car1","alex"],
]
outdataset = {}
for route,car,driver in dataset:
key = (route,car)
_d = outdataset.get(key,set())
_d.add(driver)
outdataset[key] = _d
for route,car in outdataset.keys():
print(route,car,", ".join(outdataset[(route,car)]))
route1 car1 john, alex, boris
route2 car1 alex, boris
route3 car2 alex
route1 car2 alex
route1 car3 alex
route3 car1 alex
public final class Singleton {
private static Singleton instance;
private final ConcurrentHashMap<UUID, Person> cache; // не static!
public Map<UUID, Person> getCache() {
return cache;
}
private Singleton() {
this.cache = new ConcurrentHashMap<>()
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Map<UUID, Person> cache = Singleton.getInstance().getCache();
Абсолютно бесспорно, что данную задачу можно решить множеством других путей. Да, всё что можно сделать при помощи аннотаций/рефлекций можно сделать и без них, вопрос лишь в удобстве, оптимальности и размерах кода, конечно же, совать Аннотацию везде где есть малейший намек на то, что получится её использовать - тоже не самый рациональный вариант, во всем нужно знать меру =). Но при написании API, Библиотек или программ, в которых возможно повторение однотипного (но не совсем одинакового) кода, аннотации - бесспорно оптимальное решение.
ip route add 0.0.0.0/0 via IP-адрес-роутера
. Для этого переключитесь на другую консоль клавишами Ctrl-Alt-F2-5ip a