2012-05-29 145 views
0

我碰到以下代碼,我需要對此代碼進行一些說明。幕後發生了什麼?

http://www.vogella.com/articles/AndroidSQLite/article.html#contentprovider_overview

private void checkColumns(String[] projection) { 
     String[] available = { TodoTable.COLUMN_CATEGORY, 
       TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_DESCRIPTION, 
       TodoTable.COLUMN_ID }; 
     if (projection != null) { 
      HashSet<String> requestedColumns = new HashSet<String>(
        Arrays.asList(projection)); 
      HashSet<String> availableColumns = new HashSet<String>(
        Arrays.asList(available)); 
      // Check if all columns which are requested are available 
      if (!availableColumns.containsAll(requestedColumns)) { 
       throw new IllegalArgumentException(
         "Unknown columns in projection"); 
      } 
     } 
    } 

我的問題是:由於HashSet的是用來比較是怎麼回事幕後的價值觀?哈希集存儲表中的數據嗎?如果是,那麼我可以在另一個程序中使用這個值,並在控制檯中打印出來嗎?

我不知道發生了什麼,請解釋一下。

謝謝。

回答

0

您在粘貼代碼的目的僅僅是檢查用戶沒有給出列沒有在表中存在的投影。沒有針對指定的表進行查詢,也沒有提取數據。這只是一個有效性檢查。

+0

有沒有什麼辦法可以提取數據並將某個特定列的值存儲在數組中? – user1370786

+0

當然有。對SQLite表/ ContentProvider進行查詢(我不確定你想要做什麼),你會得到一個遊標。然後,您可以使用Cursor中的結果集進行任何操作。如果你喜歡,你甚至可以把整個東西放在一個數組中。 –