Один из вариантов - предварительно отсортировать charArray
и использовать Arrays.binarySearch(charArray, myChar)
.Неотрицательное возвращаемое значение будет означать, что myChar
присутствует в charArray
.
char[] charArray = new char[] {'\uE001', '\uE002', '\uE003', '\uE004', '\uE005', '\uE006', '\uE007', '\uE008', '\uE009'};
Arrays.sort(charArray); // can be omitted if you know that the values are already sorted
...
if (Arrays.binarySearch(charArray, myChar) >= 0) {
// Do the work
}
edit Альтернативой, которая избегает использования модуля Arrays
, является размещение символовв строку (во время инициализации), а затем используйте String.indexOf () :
String chars = "\uE001...";
...
if (chars.indexOf(myChar) >= 0) {
// Do the work
}
Это не сильно отличается от того, что вы уже делаете, за исключением того, что требует меньшекод.
Если n
- размер charArray
, первое решение - O(log n)
, а второе - O(n)
.