在2D数组中搜索另一个1D数组的字符串,然后将它们与1D排序一起放入新的2D中

时间:2019-04-11 20:57:45

标签: java arrays file sorting search

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

我有一个一维数组(我们称其为“ ids”),按我需要的方式对其进行了排序。

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

因此,名称[0] [0] =名称,名称[0] [1] = ID。

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

我想做的是创建一个新的2D数组,该数组具有一个名称和一个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();
        }

2 个答案:

答案 0 :(得分:0)

由于users[j][1].equals(equal)在您的情况下永远都不为真,因此您将获得null。

答案 1 :(得分:0)

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

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

很抱歉您犯了这个愚蠢的错误。