namowen(寒号不已): 兄弟你没明白我的意思吗?? 写入到数据库的时候,需要首先根据Category[]来进行判断,如果Category[]里面的数组的值相同,就生成一张单(写入到数据表里,生成一个No),如果不同的也生成一张单。但是相同的一定要生成同一个No的单。 我More具体点,如果Category[]里面的数据为{"A","B","C","A"} 那么写入到数据表(假设为Purchase Order),那么它应该是写三张PO到数据表里面去,因为,Category的值有3个不同的数据,如果是相同的就写入到一个PO No,比若,如果Category 是A,对应有两个记录.写入到PO No 为001, then B ===> PO No 002, then C ====>PO No 003.就是这样的,明白了吗? 多谢提供想法,多谢! 至于排序, 你可以写一点代码给我参考一下吗?
class TempTable implements Comparable { public int caterogy ,name, qty, unitPrice; public TempTable( int a ,int b, int c, int d) { caterogy = a; name = b; qty = c; unitPrice = d; } public int compareTo(Object o ) { if( o == this) return 0; return caterogy - ((TempTable)o).caterogy; } } TempTable [] table = new TempTable [Caterogy.length]; for(int i=0;i<table .length;i++) { table[i] = new TempTable (Caterogy[i],Name[i],Qty[i],UnitPrice[i]); } Arrays.sort(table ); for(int i=0;i<table .length;i++) { Caterogy[i] = table[i].caterogy; Name[i] = table[i].name; Qty[i] = table[i].qty; UnitPrice[i] = table[i].unitPrice; }这是按照你的思路写的排序程序,不过我觉得你的这种情况还是用Hash比较好。
1. class NQU{ String Name; int Qty; double UnitPrice; }2. new a Hashtable ht for each item in Category if(not item in ht){ ht.put(item,new vector()) } o = new NQU(Name[i],Qty[i],UnitPrice[i]); ((Vector)ht.getValue(item)).add(o); loop3. for each key in ht insert master table v = ht.getKeyValue(key) for each item in v inert slave table loop loop不过这样似乎效率不高,大家继续
我More具体点,如果Category[]里面的数据为{"A","B","C","A"}
那么写入到数据表(假设为Purchase Order),那么它应该是写三张PO到数据表里面去,因为,Category的值有3个不同的数据,如果是相同的就写入到一个PO No,比若,如果Category 是A,对应有两个记录.写入到PO No 为001, then B ===> PO No 002, then C ====>PO No 003.就是这样的,明白了吗? 多谢提供想法,多谢!
至于排序, 你可以写一点代码给我参考一下吗?
public int caterogy ,name, qty, unitPrice;
public TempTable( int a ,int b, int c, int d) {
caterogy = a;
name = b;
qty = c;
unitPrice = d;
}
public int compareTo(Object o ) {
if( o == this)
return 0;
return caterogy - ((TempTable)o).caterogy;
}
}
TempTable [] table = new TempTable [Caterogy.length];
for(int i=0;i<table .length;i++) {
table[i] = new TempTable (Caterogy[i],Name[i],Qty[i],UnitPrice[i]);
}
Arrays.sort(table );
for(int i=0;i<table .length;i++) {
Caterogy[i] = table[i].caterogy;
Name[i] = table[i].name;
Qty[i] = table[i].qty;
UnitPrice[i] = table[i].unitPrice;
}这是按照你的思路写的排序程序,不过我觉得你的这种情况还是用Hash比较好。
谢谢你提供的程序和思路,但是用Hash Table 怎么用啊,hashtable是按照一个关键字来查询的,而我的数组里面的数据可能重复。你觉得应该怎么解决好点!多谢你了,很感谢!
用for遍历 Caterogy, 如果在Hashtable中有这项,就把Name[i] 等 加入这张表中,如果没有则新建一张表,并把表No加到Hashtable中。不是很难,不过我可能没说明白。
Category[]可能是重复的。做KEY好象不太合适吧!
这样处理起来也不太方便,有其他好方法吗??
class NQU{
String Name;
int Qty;
double UnitPrice;
}2.
new a Hashtable ht
for each item in Category
if(not item in ht){
ht.put(item,new vector())
}
o = new NQU(Name[i],Qty[i],UnitPrice[i]);
((Vector)ht.getValue(item)).add(o);
loop3.
for each key in ht
insert master table
v = ht.getKeyValue(key)
for each item in v
inert slave table
loop
loop不过这样似乎效率不高,大家继续