Мне нужна реализация Java подобной таблице структуры данных, где я мог динамично вставить или удалить строки и столбцы. Я должен получить данные из любой строки или столбца очень быстро и без издержек в выборе строки по столбцу или наоборот.
Кто-либо знает библиотеки, где такая структура данных уже реализована?
Возможно, вы сможете использовать DefaultTableModel. Он был предназначен для использования с JTable, но нет причин, по которым его нельзя использовать отдельно. Вам нужно будет добавить методы для получения данных для полной строки или столбца.
jQuery Tools - у них есть медиаплеер, называемый «flowplayer»:
-121-3747409-Minified:
#define A(x) a[b[x%16]]
int c,b[]={4,8,0,1,2,4,6,0,3,4,5,2,8,6,7,2};int
T(int*a){for(c=0;c<16;c+=2)if(A(c)&A(c+1)&A(c+2))return A(c);return 0;}
Оба возвращают число (одно необходимо, а другое нужно заменить пробелом).
Коды массива для восьми способов выиграть в триплетах, начиная с четных позиций и принятых mod 16.
Побитовое и хитрость украдено у Эрика Пи .
Более удобочитаемая форма:
#define A(x) a[b[x%16]]
// Compact coding of the ways to win.
//
// Each possible was starts a position N*2 and runs through N*2+2 all
// taken mod 16
int c,b[]={4,8,0,1,2,4,6,0,3,4,5,2,8,6,7,2};
int T(int*a){
// Loop over the ways to win
for(c=0;c<16;c+=2)
// Test for a win
if(A(c)&A(c+1)&A(c+2))return A(c);
return 0;
}
Тестирование каркаса:
#include <stdlib.h>
#include <stdio.h>
int T(int*);
int main(int argc, char**argv){
int input[9]={0};
int i, j;
for (i=1; i<argc; ++i){
input[i-1] = atoi(argv[i]);
};
for (i=0;i<3;++i){
printf("%1i %1i %1i\n",input[3*i+0],input[3*i+1],input[3*i+2]);
};
if (i = T(input)){
printf("%c wins!\n",(i==1)?'X':'O');
} else {
printf("No winner.\n");
}
return 0;
}
-121--1152319- Если производительность критична, можно использовать 2D-array и реализовать алгоритм перераспределения (например, удвоение), чтобы он мог расти.