Как проверить, существует ли элемент в массиве в Java

Итак, я не уверен, насколько хорошо это решение будет работать, так как приложение развивается с течением времени, но я остановился на этом потоке пока, если это поможет кому-то еще с подобной проблемой:

    [ 119] Пользователь регистрируется с помощью разрешения на регистрацию в / регистрации
  1. После регистрации они перенаправляются на новые / новые учетные записи, если они не создали учетную запись
  2. Учетные записи belong_to Пользователь и каждый пользователь has_one Учетная запись
  3. Все остальное, например, Продукты, belong_to Учетная запись
  4. Роли пользователей устанавливаются в зависимости от того, как вы регистрируетесь. Поэтому, если вы регистрируетесь с домашней страницы, вы по умолчанию являетесь владельцем учетной записи.
  5. Контроль доступа определяется ролями пользователей и Pundit.
  6. Данные разобраны, потому что все остальное, как продукты, belong_to Учетная запись

Вот эскиз отношений: enter image description here [ 1118]

Вот код:

accounts_controller.rb

# POST /accounts
  def create
    @user    = current_user
    @account = @user.build_account(account_params)

    respond_to do |format|
      if @account.save
        format.html { redirect_to @account, notice: 'Account was successfully created.' }
      else
        format.html { render :new }
      end
    end
  end


  def account_params
    params.require(:account).permit(:company_name, :user_id)
  end

models / account.rb

class Account < ApplicationRecord
  belongs_to :user
end

models / user.rb

[ 112]

5
задан duffymo 8 March 2009 в 00:18
поделиться

5 ответов

Поскольку Ваше объявление массива имеет тип примитива, Вы не получите ошибок компилятора или ошибок периода выполнения - значение по умолчанию 0 будет возвращено.

Если бы Ваш массив был массивом Объектов, то массив содержал бы null для любого элемента, не конкретно присвоенного.

11
ответ дан 18 December 2019 в 09:54
поделиться

Я не возвращусь null потому что int тип примитива. Это возвратит значение по умолчанию int значение, которое является 0.

Нет никакого способа знать, был ли какой-либо элемент установлен, за исключением хранения отдельного булева массива.

3
ответ дан 18 December 2019 в 09:54
поделиться

В Java только ссылочные переменные инициализируются к пустому указателю. Примитивы, как гарантируют, возвратят соответствующие значения по умолчанию. Для ints это значение 0.

2
ответ дан 18 December 2019 в 09:54
поделиться

Нет.

Ваши элементы массива являются только достаточно большими для содержания ints, в этом случае. Нет никакого места, чтобы хранить информацию о том, если элемент "существует". Это было выделено, таким образом это существует. В Java, недавно выделенном int массивы будут инициализированы ко всему нулю элементов.

1
ответ дан 18 December 2019 в 09:54
поделиться

Можно использовать checkstyle, pmd, и findbugs на источнике (findbugs на двоичном файле), и они скажут Вам вещи как это.

К сожалению, не похоже, что они ловят эту конкретную проблему (который имеет смысл, массив, как гарантируют, будет иметь каждый членский набор к 0, пустой указатель или ложь).

Использование тех инструментов банка поймает экземпляр и участников класса (которые не являются массивами), которые используются прежде чем быть данным значения хотя (подобный вид проблемы).

0
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: