0

我正在制作一个读取如下文本文件的程序:

  3679        87
   196        60
 17914        12
 18618        64
  2370        65
   584        85
 18524        34
 12024         5
  6992        76
 18410        56

所以列表是这样设置的,左列是商品ID,右列是库存中的商品编号(好像这是一家商店)。我需要这个程序做的是,从最低到最高对左列(项目 ID)进行排序,然后将列表打印出来,如图所示,并让正确的库存数量与之对齐。所以它看起来像这样:

    184       14
    196       60
    206       31
    584       85
    768       85
    2370      65
    3433      5
    3679      87

    etc....

所以到目前为止我自己写的是,我导入文件,将数字分成两个不同的数组,这样我就可以使用 Arrays.sort() 对 ID 进行排序。

现在我要做的是,确保如果我对 ID 进行排序,我可以让库存遵循其分配的 ID。我在 Java Docs 上进行了一些搜索,发现了 SortKey 函数,我想知道如何使用它?或者,如果它甚至是解决这个问题的正确方法。

这是我当前的代码:

   import java.io.File;
   import java.io.FileNotFoundException;
   import java.io.FileReader;
   import java.util.ArrayList;
   import java.util.Arrays;
   import java.util.List;
   import java.util.Scanner;

    public class Store {

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

    // **************Scanner s = new
    // Scanner(input).useDelimiter("\\s*,\\s*");

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

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    ArrayList<Integer> ids = new ArrayList<Integer>();
    ArrayList<Integer> inventory = new ArrayList<Integer>();
    int arraySize = numbersString.size();

    List<Integer> l1 = new ArrayList<Integer>();
    List<Integer> l2 = new ArrayList<Integer>();

    Scanner s = new Scanner(new FileReader("file50.txt"));

    try {

        while (s.hasNext()) {
            l1.add(s.nextInt());
            l2.add(s.nextInt());
        }
        System.out.print(l1);
         System.out.println();
        System.out.print(l2);

        int[] list1 = new int[l1.size()];
        int[] list2 = new int[l2.size()];
        ArrayList<Integer> l3 = new ArrayList<Integer>();

        for (int x = 0; x <= l1.size() - 1; x++) {

            int n = l1.get(x);
            list1[x] = n;

        }
        // System.out.print(Arrays.toString(list1));
        for (int p = 0; p <= l2.size() - 1; p++) {

            int o = l2.get(p);
            list2[p] = o;

        }
        for(int y = 0; y < l1.size(); y++){


        }

        Arrays.sort(list1);
        Arrays.sort(list2);
        //System.out.println();
        //System.out.print(Arrays.toString(list1));

    }

    catch (Exception i) {

        i.printStackTrace();
    }

 }
     }

我希望我有足够的意义,对于如何做我想做的事情的任何建议都会很棒!

谢谢

4

1 回答 1

3

这个问题很适合映射。(Java 中的键值存储)使用 TreeMap(自动为键提供自然排序),因此您根本不需要实现排序。你的任务就是用文件值填充你的树形图。

于 2013-04-03T19:43:00.130 回答