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");
            }
        }
    }

私の質問は次のとおりです。ハッシュセットは値を比較するために使用されるため、舞台裏で何が起こっているのですか? ハッシュセットにテーブルのデータが格納されていますか? はいの場合、この値を別のプログラムで使用し、コンソールにも出力できますか?

何が起こっているのかわかりません。説明してください。

ありがとう。

4

1 に答える 1

0

貼り付けたコードの目的は、ユーザーがテーブルに存在しない列をプロジェクションに指定していないことを確認することだけです。指定されたテーブルに対してクエリは実行されず、データは抽出されません。これは妥当性チェックにすぎません。

于 2012-05-29T07:07:56.293 に答える