二进制搜索和对两个数组使用SortKey-非常详细[Java]
我正在制作一个程序,读取一个如下所示的文本文件:二进制搜索和对两个数组使用SortKey-非常详细[Java],java,arrays,binary,key,Java,Arrays,Binary,Key,我正在制作一个程序,读取一个如下所示的文本文件: 3679 87 196 60 17914 12 18618 64 2370 65 584 85 18524 34 12024 5 6992 76 18410 56 所以列表是这样设置的,左栏是项目ID,右栏是库存中项目的编号(就像这是一个商店)。我需要这个程序做的是,将左
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....
到目前为止我自己写的是,我导入文件,将数字分成两个不同的数组,这样我就可以使用array.sort()对ID进行排序
现在,我要做的是,确保如果我对ID进行排序,我可以让库存遵循其分配的ID。我已经对Java文档进行了一些搜索,找到了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();
}
}
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.Scanner;
公共类商店{
公共静态void main(字符串[]args)引发FileNotFoundException{
//*************扫描仪s=新
//扫描仪(输入)。使用分隔符(\\s*,\\s*);
ArrayList numbersString=新的ArrayList();
ArrayList编号=新的ArrayList();
ArrayList ID=新的ArrayList();
ArrayList inventory=新的ArrayList();
int arraySize=numberString.size();
列表l1=新的ArrayList();
列表l2=新的ArrayList();
Scanner s=新的扫描仪(新的文件阅读器(“file50.txt”);
试一试{
而(s.hasNext()){
l1.添加(s.nextInt());
l2.加入(s.nextInt());
}
系统输出打印(l1);
System.out.println();
系统输出打印(l2);
int[]list1=新的int[l1.size()];
int[]list2=新int[l2.size()];
ArrayList l3=新的ArrayList();
对于(intx=0;x,这个问题适合映射
使用树映射(自动提供键的自然排序),因此根本不需要实现排序。
您的任务是用文件值填充树形图。这个问题本身就是映射问题。(java中的键值存储)
使用树映射(自动提供键的自然排序),因此根本不需要实现排序。
您的任务是用文件值填充树状图。好的,那么如果您说树状图不会排序,我如何让ID从最低ID排序到最高ID?树状图会自动将键按顺序排列(相应的值正确映射)。您的任务是逐行读取文件,并使用ID作为键和inventory作为值填充TreeMap。填充TreeMap后,您可以迭代并打印以确认这些值已排序。谢谢!这似乎是我要找的。再次感谢Shappy提供帮助。许多教程/示例都很有用可以在web上使用。如果在实现过程中遇到问题,请查看它们。一个简单的问题。我应该使用哪一个:TreeMap customSortingMap=newtreemap(Comparator-Comparator)还是TreeMap naturalOrderMap=newtreemap();好的,如果您说TreeMap不会排序,那么我如何让ID从最低ID排序到最高ID?TreeMap会自动将您的键按顺序排列(正确映射相应的值)。您的任务是逐行读取文件,并使用ID作为键和inventory作为值填充TreeMap。填充TreeMap后,您可以迭代并打印以确认这些值已排序。谢谢!这似乎是我要找的。再次感谢Shappy提供帮助。许多教程/示例都很有用可以在web上使用。如果您在实现中遇到问题,请查看它们。一个快速问题。我应该使用哪一个:TreeMap customSortingMap=new TreeMap(Comparator Comparator)或TreeMap naturalOrderMap=new TreeMap();