Как я могу отфильтровать данные из ArrayList?
public class DateAndNames {
int day;
int month;
int year;
String name;
public DateAndNames(int day, int month, int year, String name) {
super();
this.day = day;
this.month = month;
this.year = year;
this.name = name;
}
public int getDay() {
return day;
}
...getters and setters...
< /code>
И я заполняю в базу данных, как это: < /p>
DbHandler hand = new DbHandler(this);
hand.add(new DateAndNames(20, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 2, 2004, "Jhon"));
hand.add(new DateAndNames(22, 3, 2008, "Jhon"));
< /code>
А затем я получаю данные в ArrayList, как это: < /p>
ArrayList list = new ArrayList();
list = hand.getData();
< /code>
И перед передачей списка в Baseadapter я хочу отфильтровать его, так что я сейчас делаю: < /p>
//filter by month and year:
public ArrayList filterTheList(int month , int year){
//the data from the database
list = hand.getData();
//temp list to store the filtered list
ArrayList filteredList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
//check:
if(list.get(i).getMonth() == month && list.get(i).getYear() == year){
DateAndNames data = new DateAndNames(
list.get(i).getDay(),
list.get(i).getMonth(),
list.get(i).getYear(),
list.get(i).getName());
//The data filtered:
filteredList.add(data);
}
}
return filteredList;
}
< /code>
Теперь большая проблема: когда у меня есть очень очень очень большие данные для запуска на цикле для петли, как 300 рядов для фильтрации, приложение работает очень медленно! Даже если я использую Asynctask, он все еще работает медленно!
Я немного новичок, но я хотел бы для хороших советов < /p>
отредактирован: < /strong > Я тоже это попробовал .. < /p>
public ArrayList getData(int month ,int year,String name){
open();
ArrayList list = new ArrayList();
Cursor c = myDb.query(TABLE_DAY, null, "name= ? and month = ? and year = ?", new String[] {name,month+"",year+""}, null, null, null);
while (c.moveToNext()) {
DateAndNames resultData = new DateAndNames(
c.getInt(0), //id
c.getString(1),//name
c.getInt(2), //month
c.getInt(3));//year
list.add(resultData);
}
close();
return list;
}
< /code>
Но все еще не работает .. < /p>
Подробнее здесь: https://stackoverflow.com/questions/277 ... -arraylist
Какой самый быстрый способ отфильтровать данные из ArrayList? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1740323579
Anonymous
Как я могу отфильтровать данные из ArrayList?
public class DateAndNames {
int day;
int month;
int year;
String name;
public DateAndNames(int day, int month, int year, String name) {
super();
this.day = day;
this.month = month;
this.year = year;
this.name = name;
}
public int getDay() {
return day;
}
...getters and setters...
< /code>
И я заполняю в базу данных, как это: < /p>
DbHandler hand = new DbHandler(this);
hand.add(new DateAndNames(20, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 2, 2004, "Jhon"));
hand.add(new DateAndNames(22, 3, 2008, "Jhon"));
< /code>
А затем я получаю данные в ArrayList, как это: < /p>
ArrayList list = new ArrayList();
list = hand.getData();
< /code>
И перед передачей списка в Baseadapter я хочу отфильтровать его, так что я сейчас делаю: < /p>
//filter by month and year:
public ArrayList filterTheList(int month , int year){
//the data from the database
list = hand.getData();
//temp list to store the filtered list
ArrayList filteredList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
//check:
if(list.get(i).getMonth() == month && list.get(i).getYear() == year){
DateAndNames data = new DateAndNames(
list.get(i).getDay(),
list.get(i).getMonth(),
list.get(i).getYear(),
list.get(i).getName());
//The data filtered:
filteredList.add(data);
}
}
return filteredList;
}
< /code>
Теперь большая проблема: когда у меня есть очень очень очень большие данные для запуска на цикле для петли, как 300 рядов для фильтрации, приложение работает очень медленно! Даже если я использую Asynctask, он все еще работает медленно!
Я немного новичок, но я хотел бы для хороших советов < /p>
отредактирован: < /strong > Я тоже это попробовал .. < /p>
public ArrayList getData(int month ,int year,String name){
open();
ArrayList list = new ArrayList();
Cursor c = myDb.query(TABLE_DAY, null, "name= ? and month = ? and year = ?", new String[] {name,month+"",year+""}, null, null, null);
while (c.moveToNext()) {
DateAndNames resultData = new DateAndNames(
c.getInt(0), //id
c.getString(1),//name
c.getInt(2), //month
c.getInt(3));//year
list.add(resultData);
}
close();
return list;
}
< /code>
Но все еще не работает .. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/27725553/what-is-the-fastest-way-to-filter-data-from-arraylist[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия