Java 幕后发生了什么?
我遇到了以下代码,我需要对此代码进行一些澄清Java 幕后发生了什么?,java,android,sqlite,Java,Android,Sqlite,我遇到了以下代码,我需要对此代码进行一些澄清 private void checkColumns(字符串[]投影){ String[]available={TodoTable.COLUMN_CATEGORY, TodoTable.COLUMN\u摘要,TodoTable.COLUMN\u说明, TodoTable.COLUMN_ID}; if(投影!=null){ HashSet requestedColumns=新HashSet( 数组。asList(投影); HashSet availab
private void checkColumns(字符串[]投影){
String[]available={TodoTable.COLUMN_CATEGORY,
TodoTable.COLUMN\u摘要,TodoTable.COLUMN\u说明,
TodoTable.COLUMN_ID};
if(投影!=null){
HashSet requestedColumns=新HashSet(
数组。asList(投影);
HashSet availableColumns=新HashSet(
Arrays.asList(可用));
//检查请求的所有列是否都可用
如果(!availableColumns.containsAll(requestedColumns)){
抛出新的IllegalArgumentException(
“投影中的未知列”);
}
}
}
我的问题是:因为hashset用于比较值,所以幕后发生了什么?hashset是否在其中存储表的数据?如果是,那么我可以在另一个程序中使用此值并在控制台中打印出来吗
我不确定发生了什么,请解释一下
谢谢 粘贴代码的目的只是检查用户在投影中没有提供表中不存在的列。没有对指定的表进行查询,也没有提取数据。这只是一个有效性检查。是否有任何方法可以提取数据并将特定列的值存储在数组中?当然有。对SQLite表/ContentProvider进行查询(我不确定您想要做什么),您将得到一个返回的游标。然后,可以使用光标中的结果集执行任何操作。如果你愿意,你甚至可以把整个东西放在一个数组中。
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");
}
}
}