Nano Hash - криптовалюты, майнинг, программирование

Получить один столбец из базы данных Realm (Android)

Я новичок в Realm.

У меня есть таблица с 3 столбцами с именами Id, Name, Email, Address. Чтобы получить данные столбца Name, мы используем запрос типа 'SELECT Name from table_name' для SQLite.

Если мы используем Realm в Android, то какой метод мы должны использовать для получения данных только одного столбца?

Я много искал в Google и документации, но безрезультатно. Кто-нибудь может мне помочь?

Обновление:

Что я пробовал:

RealmResults<User> results = query.findAll();
ArrayList<String> name = new Arraylist(); 
for(i=0; i<results.size; i++){ 
 name.add(result.get(i).getName();
}

Моя проблема:

results.size()  > 10k. So I want to avoid 10k iteration

for(i=0; i<results.size; i++){ 
}
07.03.2017

  • Downvoter, пожалуйста, укажите причину отрицательного голосования. Что-то не так в моем вопросе? прежде чем голосовать, вы должны иметь опыт в сфере. 07.03.2017
  • Вы должны сначала получить все данные из базы данных, например RealmResults<User> result1 = query.findAll();, а затем использовать цикл for, чтобы получить столбец name в другом массиве. Например. ArrayList<String> name = new Arraylist(); for(i=0; i<result1.size; i++){ name.add(result.get(i).getName();} и вы получите все данные столбцов имен в имени Arraylist. 07.03.2017
  • @SarbjitSingh Я уже использовал то же, что и ваш код. Но в моей таблице 10 тыс. строк. Поэтому я хочу избежать повторения 10k. 07.03.2017
  • В Realm нет столбцов, поэтому этот вопрос не имеет смысла. Релевантно: github.com/realm/realm-java/issues/1210 07.03.2017
  • Если вы хотите избежать итерации 10k, просто получите свои объекты, не проецируйте их на List<String> 07.03.2017

Ответы:


1

Если мы используем Realm в Android, то какой метод мы должны использовать для получения данных только одного столбца?

Вы не можете, потому что Realm - это хранилище объектов, в нем нет понятия «столбцы».


Моя проблема:

результаты.размер()> 10k. Поэтому я хочу избежать итерации 10k

for(i = 0; i < results.size(); i++){ 
}

Решение: не повторять?

 RealmResults<User> results = query.findAll();
 //List<String> name = new ArrayList<>(); 
 //for(i = 0; i < results.size(); i++){ 
 //     name.add(result.get(i).getName();
 //}
 return results;

 // ...
 String name = results.get(position).getName();
07.03.2017
  • так какая позиция это конкретный предмет? и я хочу получить их все как? я не могу понять 16.09.2018
  • Если вы хотите получить все из них, вам необходимо повторить все элементы. Но я ожидал, что вы захотите показать их, например, в RecyclerView. 16.09.2018
  • в моем случае все по-другому. Я хочу, чтобы все идентификаторы таблицы получали только эти идентификаторы из другой таблицы, как у меня: класс A: содержит, как некоторые из идентификаторов класса B, поэтому я хочу получить все эти идентификаторы из класса A, чтобы получить их из класс Б 16.09.2018
  • Если два класса находятся в одном и том же Царстве, то, скорее всего, вы могли бы просто использовать RealmList<B>. 16.09.2018
  • это окончательный список, который я хочу, это RealmList‹B›, но на основе идентификаторов, которые существуют в классе A 16.09.2018

  • 2

    Посмотрите раздел запросы в документации:

    Все выборки (включая запросы) в Realm ленивы, и данные никогда не копируются.

    Это означает, что данные определенного столбца (свойства) будут извлечены при вызове метода getMyProperty(). Не после вызова метода finadAll() объекта RealmQuery

    07.03.2017
    Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..