我想确定Java数据库中列的顺序。我有表的create语句(this.create)和列的名称(column.getName())。然后我在create语句中找到列名的索引。我将这些值分配给List,然后使用Collectio.sort()对它们进行排序。这用于确定列的顺序。唯一的问题是我没有得到预期的结果。这里是我的代码:Collection.sort没有返回预期结果
public void orderColumns() {
List<Integer> cols = new ArrayList();
for (column column : columns) {
cols.add(this.create.indexOf("`" + column.getName() + "`"));
}
Collections.sort(cols);
for (column column : columns) {
for (int i = 0; i < cols.size(); i++) {
if (this.create.indexOf("`" + column.getName() + "`") == cols.get(i)) {
this.order_of_columns.add(column);
}
}
}
System.out.println(this.create);
for(column column : order_of_columns) {
System.out.println(this.name + " : " + this.create.indexOf("`" + column.getName() + "`") + " " + column.getName());
}
}
这里是输出为一个表:
CREATE TABLE `versions` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`version` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
versions : 77 name
versions : 119 version
versions : 28 id
什么我做错了任何想法?十分感谢你的帮助!
我认为这可能是一个问题,您的for循环。你可以尝试:for(column c:columns)'而不是for for(column column:columns)'?我不明白为什么Java编译器会编译它! – cdaiga
你期望什么? –
@cdaiga因为这是合法的Java。它为不同类型的标识符保留单独的名称空间。但是,约定是使用以大写字母开头的类名,所以'column'作为类名不符合约定。 – ajb