使用java形成数字对的集群

使用java形成数字对的集群,java,Java,我必须打印110个文档的相似度矩阵,我可以打印出来,输出的是相似度最高的文档对 现在我必须基于这些文档对形成集群 问题是我无法将这些文档对存储为(4,29)、(29,76)、(45,89)输出必须是(4,29,76)、(45,89),但这里我无法获取,因为每当调用maxarray方法时数组列表都会被覆盖,输出与输入相同 public class SimilarityMatrix { public static void main(String[] arg

我必须打印110个文档的相似度矩阵,我可以打印出来,输出的是相似度最高的文档对

现在我必须基于这些文档对形成集群

问题是我无法将这些文档对存储为
(4,29)、(29,76)、(45,89)
输出必须是
(4,29,76)、(45,89)
,但这里我无法获取,因为每当调用maxarray方法时数组列表都会被覆盖,输出与输入相同

    public class SimilarityMatrix {


               public static void main(String[] args) throws IOException  {

                         int array[][]=new int[120][120];

      outputArray(array);
      }

     public static void outputArray(int[][] array) throws IOException {
                                            FileOutputStream out=new FileOutputStream("similaritymatrix.txt");
                    PrintStream p=new PrintStream(out); 

     int rowSize = array.length;
     int columnSize = array[0].length;
     for(int i = 1; i <= 110; i++) {
     System.out.print("[");
     p.print("[");

     for(int j = 1; j <= 109; j++) {
         if(i!=j && i<j)
         {
             app obj=new app();


             array[i][j]=         obj.main(i,j);


         }

         else if(i>j || i==j)
         {
                  array[i][j]=0;
         }        
                            System.out.print(" " + array[i][j]);
                            p.print(" " + array[i][j]);






     }
     System.out.println(" ]");
      p.println(" ]");

     }
     System.out.println();
      p.println();
      max(array);
     }
      public static void max(int array[][]) throws FileNotFoundException
      {
                                                  FileOutputStream out=new FileOutputStream("similaritymatrix1.txt");
                    PrintStream p=new PrintStream(out); 

     int maxValue = 1;

      int i=1;

      int j=1;
     for (  i = 1; i <= 110; i++) {
            for ( j = 1; j <= 109; j++)
            {

            if (array[i][j] > maxValue) {
            maxValue = array[i][j];

            }
            }}

             for ( i = 1; i <= 110; i++) {
            for ( j = 1; j <= 109; j++)
            {
            if(maxValue==array[i][j]){
                                  System.out.println("\nMax values in 2D array at d"+i+"d"+j+"max value ="+maxValue);


                                  p.println("\nMax values in 2D array at d"+i+"d"+j+"max value ="+maxValue);

    array[i][j]=0;
 ArrayList a = new ArrayList();
             a.add(i);
            a.add(j);
             if(!a.contains(i)&& !a.contains(j))
             {
                 a.add(i);
                 a.add(j);
                                   System.out.println("the cluster is" +a);

             }
                else  if(a.contains(i)&& !a.contains(j))
                  {
                      a.add(j);
                                        System.out.println("the cluster is" +a);

                  }
                else  if(!a.contains(i)&& a.contains(j))

                  {
                      a.add(i);
                                        System.out.println("the cluster is" +a);

                  }


                }}}


     for(  i=1;i<=110;i++)
              {
                  p.print("[");
              System.out.print("[");

                  for( j=1;j<=109;j++)
                  {
                      System.out.print(" "+ array[i][j]);
                      p.print(" "+ array[i][j]);

                  }

                p.println(" ]");
                System.out.println("]");


              }
        if(maxValue>1)         
      max(array);


      }
    }

     class app {



        private static ArrayList<String> load(String f1) throws FileNotFoundException{

            Scanner reader = new Scanner(new File(f1));

            ArrayList<String> out = new ArrayList<String>();

            while (reader.hasNext()){

                String temp = reader.nextLine();

                String[] sts = temp.split(" ");

                for (int i = 0;i<sts.length;i++){

                    if(sts[i] != "" && sts[i] != " " && sts[i] != "\n")

                        out.add(sts[i]);

                }

            }

            return out;

        }



        private static void write(ArrayList<String> out, String fname) throws IOException{


            FileWriter writer = new FileWriter(new File(fname));

            for (int i = 0;i<out.size();i++){

                writer.write(out.get(i) + "\t");

            }

            writer.close();

        }



        public static int main(int a,int b) throws IOException {

    int count=0;

            ArrayList<String> file1;

            ArrayList<String> file2;

            ArrayList<String> out = new ArrayList<String>();

            file1 = load(a+".txt");

            file2 = load(b+".txt");

            for(int i = 0;i<file1.size();i++){

        String word1 = file1.get(i);

        for (int z = 0; z <file2.size(); z++){

            if (word1.equalsIgnoreCase(file2.get(z))){


                        boolean already = false;

                        for (int q = 0;q<out.size();q++){

                            if (out.get(q).equalsIgnoreCase(file1.get(i))){

                                already = true;


                            }

                        }


                        if (already==false){

                            out.add(file1.get(i));

    count++;
                        }}}}


                    return count;








        }


        }
公共类相似矩阵{
公共静态void main(字符串[]args)引发IOException{
int数组[][]=新int[120][120];
输出阵列(阵列);
}
公共静态void outputArray(int[][]数组)引发IOException{
FileOutputStream out=新的FileOutputStream(“similaritymatrix.txt”);
打印流p=新打印流(输出);
int rowSize=array.length;
int columnSize=数组[0]。长度;

对于(int i=1;我可以请你解释得更清楚一点吗?可能会显示一些你正在尝试的代码?我对你到底想要实现的目标有点困惑。提示:如果你不将代码粘贴到这里,我们将看不到你的代码。你可以粘贴代码。请尝试问题下方的“编辑”按钮编辑你的问题添加代码,然后将出现{}符号来突出显示您的代码,因此选择代码,单击{}并保存它。这个问题没有任何意义…我建议删除这个问题,然后继续处理问题文本,并包括代码的相关部分(但不要太多)在问题中,然后发布一个新的、改进的问题…你可以在问题结束之前尝试编辑这个问题,使其更好,但最好在不匆忙或压力的情况下正确地进行编辑,这就是为什么我建议删除并用准备更好的问题再次提问的原因。