Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何在特定的矩阵索引中存储模式?_Java_Design Patterns_Matrix_Arraylist_Data Mining - Fatal编程技术网

在java中,如何在特定的矩阵索引中存储模式?

在java中,如何在特定的矩阵索引中存储模式?,java,design-patterns,matrix,arraylist,data-mining,Java,Design Patterns,Matrix,Arraylist,Data Mining,我有一段伪代码,无法正确地将其转换为Java代码,我的第一个问题是我使用的数据结构。我必须使用能够处理大型数据集的数据结构,并且必须具有可伸缩性。我将展示这部分伪代码并提出以下问题: Create a matrix of pattern lists ptList |A] x |A| For i = |sk| - maxError to |sk| -1 For j = i +1 to |sk| Construct new pattern p = {sk [i], sk [j]} If

我有一段伪代码,无法正确地将其转换为Java代码,我的第一个问题是我使用的数据结构。我必须使用能够处理大型数据集的数据结构,并且必须具有可伸缩性。我将展示这部分伪代码并提出以下问题:

 Create a matrix of pattern lists ptList |A] x |A|
 For i = |sk| - maxError to |sk| -1 
 For j = i +1 to |sk|
 Construct new pattern p = {sk [i], sk [j]}

 If p NOT in ptList [sk [j], sk [j]] then     
     then Add p to ptList [sk [j], sk [j]]
 Add (k,i,j) to ptList [sk [j], sk [j]].getLocationList (p)
因此,首先我必须创建一个矩阵并搜索模式,然后在找到模式后,我必须将模式添加到[j][j]位置,例如模式3,28必须添加到位置[28][28]等等。但当我这样做时,java会给我IndexOutOfBoundException,然后我必须在同一位置存储一个三元组。这可能吗?我使用了ArrayList和List,但我无法完成这项工作。
最后一个问题,有人能解释伪代码最后一行的含义吗?如何为同一模式和同一位置生成位置列表。

假设您的模式有类,我不确定您需要存储什么数据类型


它并不总是最有效的,但也不是太糟糕,而且很简单。

您所说的大数据集有多大?这里需要更多背景知识。这个算法试图做什么?什么是ptList?什么是maxError?什么是getLocationList?这需要更多的背景。大小/内存问题的部分答案取决于此矩阵是非常稀疏还是非常密集。我甚至不确定我是否能从伪代码中分辨出来,因为我不知道其他的东西是什么。@Leo数据集可能包含50000个序列,每个序列平均包含35项,这意味着超过200万项。@FrobberOfBits称为IPM的算法,用于从web跟踪中挖掘频繁序列。ptList是我现在必须创建的矩阵。最重要的是,在添加所有模式之前,我是否可以在[j][j]位置存储一个模式?至于其他部分,可能需要一天的时间来解释。是的,您可以在[j][j]上存储图案。但是你确定sk[j]在边界内了吗?我的意思是如果矩阵是AxA,那么sk[j]=0?sk-1是否大于等于0。。。
int sizeofA = -1; // Insert size of |A|
List<List<Something>> matrix = new ArrayList<>(sizeofA);
for(int i = 0; i < sizeofA; ++i)
    matrix.add(new ArrayList<Something>(sizeofA));

// Insert at position i, j
matrix.get(i).get(j).add(value);