繁体   English   中英

二进制搜索并为两个数组使用SortKey-非常详细[Java]

[英]Binary Search and using SortKey for two arrays - Very detailed [Java]

我正在编写一个读取文本文件的程序,如下所示:

  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();
    }

 }
     }

我希望我有足够的道理,这对我如何做自己想做的任何建议都非常有用!

谢谢

这个问题使自己适合绘制地图。 (Java中的键值存储)使用TreeMap(自动对键进行自然排序),因此根本不需要实现排序。 您的任务是仅用文件值填充树状图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM