我正在编写一个程序来根据modvalue对数据库进行分区。为此,我使用列表(listoflists
)列表,其中包含一个分区的列表。但是当我运行它时,列表的内容不会显示,或者数据可能没有被添加到列表中
这是代码:
//List of lists
List<List<Integer>> listoflists = new ArrayList<List<Integer>>();
while(rs.next()) {
int rollno = rs.getInt(1);
data = Integer.toString(rollno);
//calculating hmac value
int hmacvalue = dbpartition.hmacSha1(data, ks);
modvalue = Math.abs(hmacvalue % wl);
System.out.println("modvalue is " + modvalue);
for(int i = 1; i <= wl; i++)
{
List<Integer> list = new ArrayList<Integer>();
//System.out.println("List created");
if(i == modvalue)
{
list.add(rollno);
System.out.println("data added to List");
}
}
}
System.out.println(listoflists);
我得到的输出是:
The hash of the tuple is 37529665
modvalue is 4
data added to List
The hash of the tuple is -1387128724
modvalue is 7
data added to List
The hash of the tuple is 636638561
modvalue is 0
The hash of the tuple is 435523502
modvalue is 11
data added to List
[]
谁能告诉我哪里出错了?
答案 0 :(得分:1)
您永远不会将list
添加到ListOflists
。
BTW:选择一个命名约定并坚持下去。我建议将ListOflists
称为listOfLists
。
答案 1 :(得分:0)
您没有在任何地方向Listoflists
添加您的列表,因此它仍为空。
答案 2 :(得分:0)
List<List<Integer>> Listoflists = new ArrayList<List<Integer>>();//List of lists
List<Integer> list = null;
while(rs.next())
{
int rollno=rs.getInt(1);
data=Integer.toString(rollno);
int hmacvalue=dbpartition.hmacSha1(data, ks);
modvalue = Math.abs(hmacvalue % wl);
System.out.println("modvalue is"+modvalue);
for(int i=1;i<=wl;i++)
{
int rownum=rs.getRow();
if(rownum==1) //for first row create partitions or lists
{
list = new ArrayList<Integer>();
System.out.println("List created");
Listoflists.add(list);
//System.out.println(Listoflists);
}
if(i==modvalue)
{
//list.add(rownum);
Listoflists.get(i-1).add(rownum);
System.out.println("row number added to List");
}
}
// Listoflists.add(list);
}
System.out.println(Listoflists);
我的输出为:
[[39],[8,28,29,41],[5,23],[1,6,9,12,13,17,24,33,50],[31,38], [42],[2,15,47,49,51],[10,11,18,20,21,22,26,35,45],[19],[7,14,16,25,27 ,32,46],[4,36,37,43],[34,40,44,48],[]]
我有正确的清单列表。