Вы можете предварительно вычислить некоторые таблицы, если хотите избежать слишком больших сдвигов.
Я делаю это для a&mask
. Для другой ситуации это совпадает с a&~mask
.
Во-первых, вы делаете & amp; маска, чтобы бросить 1 на неиспользуемые позиции А.
Предположим, у вас есть a=a1 0 a2 0 a3 0 a4 0
. Вы хотите получить номер a1 a2 a3 a4
. Существует не так много возможностей.
Вы можете иметь предварительно вычисленный вектор V коротких целых чисел и ассоциировать для каждой записи соответствующее значение.
Например, v[0b10100010]
будет 13
, если маска 0b10101010
.
Если предварительно вычисленный вектор не слишком велик, он останется в кэше L1, поэтому он будет очень быстрым, например, если вы разделите свое число на группы по 8 или 16 бит.
Проблема с представлением Вашей формы. Spring не может связать объект команды, таким образом, это не отправляет форму, но перенаправляет Вас к formView вместо этого.
Когда привязка будет успешно выполнена, Вы будете видеть это сообщение вместо этого:
No errors -> processing submit
Для решения проблемы необходимо будет зарегистрировать CustomCollectionEditor в контроллере. (См. эту ссылку). Это было бы что-то вроде этого:
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception
{
binder.registerCustomEditor(Set.class, "rules", new CustomCollectionEditor(Set.class)
{
protected Object convertElement(Object element)
{
String name = "";
if (element instanceof String)
name = (String) element;
return name != null ? new Rule(name) : null;
}
});
}