|
|
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
Есть ли аналог для int i; if ((i ==1)||(i ==2)||(i ==3))..., только более кратко? Наподобие как в sql-е where i in (1,2,3)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 17:36 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 17:38 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
no56892 Код: java 1. Я бы: 1. Вынес константы с которыми сравнивать в static final .... поле класса 2. Вместо Arrays использовал бы HashSet. private final static HashSet<Integer> validValues = new HashSet<>( Arrays.asList( 1,2,3 )); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 17:46 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
misha1973, 1. Если у вас всего 3 элемента, то какой смысл? 2. Если вашими троеточиями вы пытались донести что элементов может быть больше, то какой-то синтаксис у вас далекий от математики Возможно вы имели ввиду это? misha1973if ((i ==1)||(i ==2)||(i ==3)||...||(i ==N)), только более кратко? Наподобие как в sql-е where i in (1,2,3, ... , N) 3. Можно использовать HashSet.contains(). Но надо понимать накладные расходы на автобоксинг и поиск. 4. В Google Guava и Commons Lang есть класс Range. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 17:49 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
misha1973, Стильно, модно, мололежно Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 17:54 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
Blazkowicz3. Можно использовать HashSet.contains(). Но надо понимать накладные расходы на автобоксинг и поиск. На поиск - HashSet должен быть достаточно быстрым На автобоксинг - можно взять сторонние коллекции для примитивных типов. Я пользовался http://fastutil.di.unimi.it/ Ну а с накладными расходами сейчас никто не заморачивается ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2016, 18:11 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevBlazkowicz3. Можно использовать HashSet.contains(). Но надо понимать накладные расходы на автобоксинг и поиск. На поиск - HashSet должен быть достаточно быстрым На автобоксинг - можно взять сторонние коллекции для примитивных типов. Я пользовался http://fastutil.di.unimi.it/ Ну а с накладными расходами сейчас никто не заморачивается ((( Что значит "никто"? Хочется в 16Гб уложиться TIntHashSet хорошо экономит место. А чтение его (и вообще всех классов Трове) исходников- увлекательное занятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 07:56 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
misha1973Есть ли аналог для int i; if ((i ==1)||(i ==2)||(i ==3))..., только более кратко? Наподобие как в sql-е where i in (1,2,3)... Сам думал об этом. Сахарный оператор in был-бы весьма полезен. Но для 2-10 вариантов констант лучше всего подошла-бы проверка Код: java 1. с точки зрения компиллятора. Для более толстых массивов (порядка 10-1000) я-бы предложил отсортировать (1 раз в синглтоне или конструкторе) а потом использовать дихотомический поиск константы. Код: java 1. 2. По поводу стильно-модно-молодежно.... Код: java 1. я думаю когда эйфория пройдет и наступит фаза переосмысления юзкейсов последовательностей и лямбд и мы посчитаем сгорающие в топке мегафлопы и зададим соотв. вопрос. А где есть чистая алгоритмическая составляющая? И где есть обвязка которая ничего не делает но выступает фасадом для поддержки парадигмы. И главный вопрос - каковы накладные. Здесь-же краями зацепим parallel и использование одного разделяемого пула потоков на все параллельные операции. Вобщем и целом я голосую ЗА но... бенчмарк ... бенчмарк и еще раз бенчмарк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 21:22 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
Да. По поводу хеш-таблички не имею ничего против. Просто добавлю что есть вариант реализации хештейбла поверх массива (эконом-вариант). Правда там есть наихудший случай который надо также рассмотреть и рассмотреть резервирование одной константы которая будет обозначать NULL внутри элементов массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2016, 21:25 |
|
||
|
Как сравнить int с множеством значений на равенство
|
|||
|---|---|---|---|
|
#18+
maytonДа. По поводу хеш-таблички не имею ничего против. Просто добавлю что есть вариант реализации хештейбла поверх массива (эконом-вариант). Ещё раз- TIntHashSet из трове- как раз хэшсет на основе массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2016, 08:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39312293&tid=2123702]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 445ms |

| 0 / 0 |
