Как преобразовать Строковый объект в объект Boolean?

Это действительно зависит от того, как Вы собираетесь получить доступ к дереву.

Одна умная техника должна дать каждому узлу идентификатор строки, где идентификатор родителя является предсказуемой подстрокой ребенка. Например, родитель мог быть '01', и дети будут '0100', '0101', '0102', и т.д. Таким образом, можно выбрать все поддерево из базы данных сразу с:

SELECT * FROM treedata WHERE id LIKE '0101%';

, поскольку критерий является первоначальной подстрокой, индекс на столбце ID ускорил бы запрос.

314
задан TheKojuEffect 25 September 2013 в 18:46
поделиться

5 ответов

Попробуйте (в зависимости от того, какой тип результата вы хотите):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Преимущество:

  • Boolean: это не создает новые экземпляры Boolean, поэтому производительность выше (и меньше сборка мусора ). Он повторно использует два экземпляра либо Boolean.TRUE , либо Boolean.FALSE .
  • boolean: экземпляр не требуется, вы используете примитивный тип.

Официальная документация в Javadoc .


ОБНОВЛЕНО:

Автобоксинг также можно использовать, но это снижает производительность.
Я предлагаю использовать его только тогда, когда вам нужно использовать себя, а не когда этого можно избежать.

502
ответ дан 23 November 2019 в 01:08
поделиться

Помимо отличного ответа KLE, мы также можем сделать что-то более гибкое:

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") || 
        string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") || 
        string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") || 
        string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");

(на основе ответа zlajo ...: -))

17
ответ дан 23 November 2019 в 01:08
поделиться
Boolean b = Boolean.valueOf(string);

Значение b истинно, если строка не является нулем и равно истинно (без учета регистра).

21
ответ дан 23 November 2019 в 01:08
поделиться

Будьте осторожны при использовании Boolean.valueOf (строка) или Boolean.parseBoolean (строка) . Причина в том, что методы всегда будут возвращать false, если String не равно «true» (регистр игнорируется).

Например:

Boolean.valueOf("YES") -> false

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

Например:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}
87
ответ дан 23 November 2019 в 01:08
поделиться
boolean b = string.equalsIgnoreCase("true");
11
ответ дан 23 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

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