Как искать и сортировать в J2me (по возрастанию или по убыванию)
Я задаюсь вопросом о том, как искать в J2ME. Я искал в Интернете, так много результатов показывают мне, и я вижу на Java2s.com я получил результат использования RecordFilter
и соответствует методу для поиска в хранилище записей.
Но моя проблема в том, что мне нужно передать в него 2 или более параметров. Как можно привести совпадения с этим параметром?
И как сортировать по убыванию или по возрастанию, как пузырьковая сортировка?
2 ответа
Объедините ваши поиски в одну строковую переменную. Разделите каждого из них ;
например. В коде matches
Метод взорвать строку, чтобы получить каждый критерий поиска. Чтобы сделать фильтр действующим, создайте экземпляр SearchFilter и вызовите matches
метод с конкантированной строкой в качестве параметра. Для sort
реализовать RecordComparator
интерфейс; реализовать compare
метод для построения ваших критериев сортировки. Сделайте поиск в Google о j2me+recordcomparator, чтобы увидеть примеры того, как сделать сортировку.
РЕДАКТИРОВАТЬ:
В коде matches
Метод взорвать параметр String, полученный из параметра byte[]. Лечить каждую взорванную строку, чтобы сделать критерии. Как я понимаю, вы хотите передать две строки в качестве критерия поиска, когда вы написали:
SearchFilter search = new SearchFilter(txtSearch.getString(), strType);
Так что в конструкторе должно быть два параметра!!!
Если вы хотите сделать сопоставление, позвоните
if searchFilter.matches((search1+";"+sType).getBytes())
Затем взорвать candidate
параметр в две строки, когда вы кодируете matches
метод.
Когда я сохраняю свои данные в RMS, я сохраняю их в виде строки [], как будто я хочу сохранить имя, возраст, зарплату,EmpID для каждого сотрудника, сохраняю его, создаю массив и преобразую его в байты, а затем сохраняю в RMS. Когда я получаю его, я делаю обратный процесс. Теперь, если я хочу получить сотрудника с именами, начинающимися с A и с зарплатой 10000, я использую следующий фильтр
class UtilFilter implements RecordFilter{
public UtilFilter(String str_searchText,String str_searchText1)
{
this.str_searchText = str_searchText.toLowerCase();
this.str_searchText1 = str_searchText1.toLowerCase();
}
public boolean matches(byte[] bt_byteData)
{
String str_str = "";
String str_str1 = "";
//here goes code how u get back ur String[] from RMS say u get it in Data
str_str = Data[0].trim();
str_str1 = gd_cd.Data[2].trim();
if(str_searchText != null && str_searchText1 != null && str_str.equals(str_searchText) && str_str1.equals(str_searchText1 ))
{
return true;
}
else
{
return false;
}
}
}
Таким образом, я могу отфильтровать любые параметры. Надеюсь, это поможет!:)