我想確定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