首页 > 解决方案 > 在 2D Array 中搜索另一个 1D Array 的字符串,然后将它们放入一个新的 2D 中

问题描述

这个标题一定很混乱,所以让我解释一下我的问题。

我有一个按我需要的方式排序的一维数组(我们称之为“ids”)。

然后,我有另一个二维数组,其中包含位置 0 的名称和位置 1 的 id(我们称之为“名称”)。

所以名称[0][0] = 名称,名称[0][1] = id。

让我澄清一下,这两个数组的长度不同!

我想要做的是创建一个新的二维数组,它有一个名称和一个 ID,但像我的一维数组一样排序(id 的顺序与它们在那里的顺序相同)。

到目前为止我尝试过的是这个(我得到的只是一个充满空值的文本文件):

for (int i = 0; i < ids.length; i++){
            String equal = ids[i];

            for (int j = 0; i < users.length; i++) {
                if(users[j][1].equals(equal)) {
                    sortedArray[i][0] = users[j][0];
                    sortedArray[i][1] = equal;
                }
            }

        }

        for (int i=0; i<sortedArray.length; i++){
            writer.println(sortedArray[i][0]+"\t"+sortedArray[i][1]);
        }

它可能没有任何用处,但由于我是通过读取文件来创建这些,所以这是我的其余代码:

BufferedReader reader;
        BufferedReader reader2;
        PrintWriter writer;

        String[][] users = new String[39431][2];
        String[] ids = new String[22890];
        String[][] sortedArray = new String[22890][2];

        reader = new BufferedReader(new FileReader("allConnectedUsers.txt"));
        reader2 = new BufferedReader(new FileReader("ids.txt"));

        String sorted = "sortedNamesWithIDs.txt";
        writer = new PrintWriter(sorted, "UTF-8");

        String usersline = reader.readLine();
        String idsline = reader2.readLine();


        for (int i = 0; i < users.length; i++) {
            String splittedLine[] = usersline.split(" ");
            String name = splittedLine[0];
            String id = splittedLine[1];
            users[i][0] = name;
            users[i][1] = id;
            usersline = reader.readLine();
        }

        for (int i = 0; i < ids.length; i++) {
            String onlyIDs;
            onlyIDs = idsline;
            ids[i] = onlyIDs;
            idsline = reader2.readLine();
        }

标签: javaarraysfilesortingsearch

解决方案


我实际上修复了它。这是一个非常愚蠢的错误。

在嵌套循环中,我没有检查“j”或增加它,而是 i。

对不起,这个愚蠢的错误,感谢您阅读。


推荐阅读