我正在制作一个读取如下文本文件的程序:
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();
}
}
}
我希望我有足够的意义,对于如何做我想做的事情的任何建议都会很棒!
谢谢