С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
1

Сравнение коллекций

26.02.2014, 19:38. Просмотров 673. Ответов 2
Метки нет (Все метки)

Доброго времени суток)
Есть код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package ru.myscanner.scannerth;
 
import java.io.File;
import java.util.ArrayList;
 
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
 
@SuppressLint("SdCardPath")
public class CatalogService extends Service {
     
    static final String NUM_DET = "numdet";
    public void onCreate(){
        super.onCreate();
        ScnCatalog();
    }
    
    public int onStartCommand(Intent intent, int flags, int startId){
        //Описываем работу  таймера  запуска метода  сравнения  массивов
        
        return super.onStartCommand(intent, flags, startId);
    }
    
    public void onDestroy(){
        super.onDestroy();
    }
 
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Автоматически созданная заглушка метода
        return null;
    }
    DBHelper db = new DBHelper(this);
    
    public void ScnCatalog(){
        String insbd = null;
         String[] insertBd = null;
         ArrayList<String> listCatalog = null;
         ArrayList<String> listCatalogBd = null;
         listCatalog = getCatalog();
         listCatalogBd = getCatalogBd();
         listCatalog.removeAll(listCatalogBd);
         insertBd = (String[]) listCatalog.toArray();
         for(int i = 0; i <= insertBd.length  - 1; i++) {
                insbd = insertBd[i];
                if(insbd!=null){
                db.insert(insbd, 0.0, 0.0, 0.0, 0.0); 
                }
            }
         //Вставка в бд
        //
        
    }
 
    private ArrayList<String> getCatalogBd() {
        ArrayList<String> forReturnListCatalogBd = new ArrayList<String>();
        String scnbdc = null;
        String[] scndb = null;
        scndb = db.query("mytable", new String[] {NUM_DET} , null, null, null, null, null);
        for(int i = 0; i <= scndb.length  - 1; i++) {
            scnbdc = scndb[i];
            forReturnListCatalogBd.add(scnbdc);
        }
        return forReturnListCatalogBd;
    }
 
    private ArrayList<String> getCatalog() {
        ArrayList<String> forReturnListCatalog = new ArrayList<String>();
        String scn = null;
        File MyDir = new File("/mnt/sdcard/");
        String [] FilesInMyDir = MyDir.list();
        for(int i = 0; i <= FilesInMyDir.length  - 1; i++) {
              scn = FilesInMyDir[i];
              forReturnListCatalog.add(scn);
        }
        return forReturnListCatalog;
    }
}
Выкидывает в лог:
02-26 12:23:34.798: E/AndroidRuntime(14186): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-26 12:27:30.762: W/dalvikvm(16754): threadid=1: thread exiting with uncaught exception (group=0xb4fa8288)
02-26 12:27:30.822: E/AndroidRuntime(16754): FATAL EXCEPTION: main
02-26 12:27:30.822: E/AndroidRuntime(16754): java.lang.RuntimeException: Unable to create service ru.myscanner.scannerth.CatalogService: java.lang.NullPointerException
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2373)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.access$1600(ActivityThread.java:130)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.os.Handler.dispatchMessage(Handler.java:99)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.os.Looper.loop(Looper.java:137)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-26 12:27:30.822: E/AndroidRuntime(16754): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 12:27:30.822: E/AndroidRuntime(16754): at java.lang.reflect.Method.invoke(Method.java:511)
02-26 12:27:30.822: E/AndroidRuntime(16754): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-26 12:27:30.822: E/AndroidRuntime(16754): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-26 12:27:30.822: E/AndroidRuntime(16754): at dalvik.system.NativeStart.main(Native Method)
02-26 12:27:30.822: E/AndroidRuntime(16754): Caused by: java.lang.NullPointerException
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.getCatalogBd(CatalogService.java:62)
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.ScnCatalog(CatalogService.java:43)
02-26 12:27:30.822: E/AndroidRuntime(16754): at ru.myscanner.scannerth.CatalogService.onCreate(CatalogService.java:17)
02-26 12:27:30.822: E/AndroidRuntime(16754): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2363)
02-26 12:27:30.822: E/AndroidRuntime(16754): ... 10 more

Добавлено через 9 минут
Смысл в том что я получаю две коллекции и сравниваю их.
Коллекция getCatalog отрабатывается нормально, а вот вторая getCatalogBd неотробатывается может я недопонял метод query?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2014, 19:38
Ответы с готовыми решениями:

Сравнение классов
Всем привет! Хочу из массива достать элементы определенного класса, но не совсем получается......

Сравнение EditText и String
Сравнение строк в jave можно осуществить таким образом: String str1 = &quot;abc&quot;; String str2 = &quot;abc&quot;;...

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

Сравнение двух строк
Подскажите сравниваю две строки получаю отрицательный результат на одинаковых строка. Как так может...

Сравнение строковых ресурсов
Здравствуйте! Не получается сравнить полученные данные, чтобы сменилась кнопка. Что я делаю не...

2
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
26.02.2014, 21:03 2
alexmx, db.query("mytable", new String[] {NUM_DET} , null, null, null, null, null) возвращает null, разберитесь почему. И мб я уже чего-то не помню, а разве запросы к БД не cursor возвращают?
0
alexmx
0 / 0 / 0
Регистрация: 19.01.2014
Сообщений: 51
26.02.2014, 22:27  [ТС] 3
В общем извратился до этого:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private ArrayList<String> getCatalogBd() {
        ArrayList<String> forReturnListCatalogBd = new ArrayList<String>();
        String scnbdc = null;
        Cursor scndb = database.query(DBHelper.TIME_TABLE, new String[] {NUM_DET} , null, null, null, null, null);
        String name = null;
        scndb.moveToFirst();
        while (scndb.moveToNext()) {
            
            name = scndb.getString(scndb.getColumnIndex(NUM_DET));
            forReturnListCatalogBd.add(name);
        }
        
         
            
        
        return forReturnListCatalogBd;
    }
теперь ошибка в строке:
Java
1
Cursor scndb = database.query(DBHelper.TIME_TABLE, new String[] {NUM_DET} , null, null, null, null, null);
Лог:
02-26 17:25:39.665: E/AndroidRuntime(6550): Caused by: java.lang.NullPointerException
02-26 17:25:39.665: E/AndroidRuntime(6550): at ru.myscanner.scannerth.CatalogService.getCatalogBd(CatalogService.java:64)

что касается первого варианта, там ошибка была в том что я ссылался на метод query в новом экземпляре класса бд и эклипс меня культурно попросил создать метод query который возвращал null

Добавлено через 22 минуты
Класс бд:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package ru.myscanner.scannerth;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DBHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "my.db";
    static final int DB_VERSION = 1;
    
    //Таблица
    static final String TIME_TABLE = "tiemtable";
    
    //Поля
    static final String TIME_ID = "_id";
    static final String NUM_DET = "numdet";
    static final String COMMAND_G0 = "g0";
    static final String COMMAND_G1 = "g1";
    static final String COMMAND_G94 = "g94";
    static final String COMMAND_G23 = "g23";
    
     // Скрипт создания таблицы
      static final String DB_CREATE = "create table " + TIME_TABLE + "("
          + TIME_ID + " integer primary key autoincrement, "
          + NUM_DET + " string, "
          + COMMAND_G0 + " double, " 
          + COMMAND_G1 + " double, "
          + COMMAND_G94 + " double, "
          + COMMAND_G23 + " double"
          + ");";
    
    public DBHelper(Context context) {
          super(context, DB_NAME, null, DB_VERSION);
        }
    
    @Override
    public void onCreate(SQLiteDatabase db) {
         db.execSQL(DB_CREATE);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS friends");
        onCreate(db);
    }
    
    public  void insert(String numdet, Double g0, Double g1, Double g94, Double g23 ){
        ContentValues values=new ContentValues(2);
        values.put("numdet", numdet);
        values.put("g0", g0);
        values.put("g1", g1);
        values.put("g94", g94);
        values.put("g23", g23);
        getWritableDatabase().insert("tiemtable", "numdet", values);
        
    }
}
Может я запрос не правильно формирую?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 22:27

Не работает сравнение String через ==
if (oldParam1 == param1 &amp;&amp; oldParam2==param2){ ...

Запись и сравнение звука с имеющимся
Добрый день, столкнулся с проблемой, задача такова: записываем смартфоном звук и сравниваем с...

Сравнение строки с getTitle (WebView)
Такая проблема: открываю свою страницу из ресурсов, титул страницы test. Но при следующей проверке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru