Вниз  Java-программирование (1-ые посты)
- 24.03.2016 / 08:12
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
зачем нужны вложенные (класс внутри класса) классы? практическое применение?
__________________
 わからない!!
- 24.03.2016 / 09:09
Ginosaji
  Пользователь

Ginosaji 
Сейчас: Offline
- 24.03.2016 / 21:40
Naik
  Пользователь

Naik 
Сейчас: Offline
ВитаминКО, 1. чтобы не выносить код из класса, если он больше нигде не нужен кроме как в родительском.
2. если это не статический класс, то он имеет доступ к полям и методам родительского
- 24.03.2016 / 23:50
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
то есть, если нет смысла делать отдельный класс, то можно внутри сделать
__________________
 わからない!!
- 25.03.2016 / 19:57
Naik
  Пользователь

Naik 
Сейчас: Offline
ВитаминКО, Да, чтобы не засорять namespace, или если нужен доступ к классу-родителю
- 5.04.2016 / 19:47
mcdevil
  Пользователь

mcdevil 
Сейчас: Offline
Есть String[] array и String element, нужно найти индекс element в array, как это сделать быстрее?
- 5.04.2016 / 20:18
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
mcdevil, зависит от того, что значит «сделать быстрее» и самой задачи (как правило, дьявол кроется в деталях).
1. Простой линейный поиск,
2. Arrays.binarySearch( ... ), если массив отсортирован
3. ...
N. Найти другую структуру данных, которая больше подходит для такой задачи, например, Bidirectional Map.
__________________
 don't tread on me
- 7.04.2016 / 16:49
mariyka
  Пользователь

mariyka 
Сейчас: Offline
mcdevil,
  1. int search(String[] data, String element){
  2.    int a = 0;
  3.    int dataLength = data.lenght;
  4.    char e = element.charAt(0);
  5.    for(;a < dataLength;a+=1){
  6.     if(data[a].charAt(0) == e){
  7.      if(data[a].equals(element)){
  8.       break;
  9.      }
  10.    }
  11.    return a;
  12. }

- 7.04.2016 / 19:41
mcdevil
  Пользователь

mcdevil 
Сейчас: Offline
mariyka, в твоем коде сравнивается во первых первый символ строк, во вторых если размер data 20 то цикл выполнится 20 раз а мне нужно как можно меньше.
Вообщем сделал так
  1. int search(String[] data, String element)
  2. {
  3.  int begin = 0;
  4.  int end = data.length - 1;
  5.  for(; begin < data.length; begin++, end--)
  6.  {
  7.   if (element.equals(data[begin])
  8.    return begin;
  9.   if (element.equals(data[end])
  10.    return end;    
  11.  }
  12.  return -1;
  13. }

при этом элемент найдется в два раза быстрее, или вообще мгновенно когда элемент находится в конце массива.
нет ли других более эффективных способов. :)

Arigato, что такое отсортированный?

Изменено mcdevil (7.04 / 19:47) (всего 2 раза)
- 7.04.2016 / 19:51
mariyka
  Пользователь

mariyka 
Сейчас: Offline
mcdevil, тебе нужно сократить сколько будет повторятся цикл? или по времени выполнения?
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)