Я делаю программу, которая считывает текстовый файл, который выглядит следующим образом:двоичный поиск и использование SortKey для двух массивов - Очень подробно [Java]
3679 87
196 60
17914 12
18618 64
2370 65
584 85
18524 34
12024 5
6992 76
18410 56
Так что список настроен так, левые column - это идентификатор элемента, а правый столбец - номер элемента в инвентаре (как если бы это был магазин). Мне нужна эта программа, сортировка левого столбца (Идентификатор элемента) от самого низкого до самого высокого, затем Распечатайте список, как показано, и укажите правильное количество инвентаря, выровненного с ним. Так что это выглядит следующим образом:
184 14
196 60
206 31
584 85
768 85
2370 65
3433 5
3679 87
etc....
Так что я написал до сих пор сам, я импортировать файл, разделить число на два разные массивы, так что я мог бы разобраться в идентификаторах, используя Arrays.sort ().
Теперь, что я пытаюсь сделать, убедитесь, что, если я сортирую идентификаторы, у меня может быть инвентарь, следуйте его присвоенному идентификатору. Я сделал некоторые поиски в Документах по 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();
}
}
}
Я надеюсь, что я сделал достаточно здравого смысла, и это было бы здорово для любых предложений о том, как сделать то, что я пытаюсь сделать!
Thanks
Хорошо, так как я могу получить идентификаторы для сортировки с самого низкого ID до самого высокого, если вы скажете, что TreeMap НЕ сортируется? –
TreeMap автоматически сохранит ваши ключи в порядке (соответствующие значения отображаются правильно). Ваша задача - просто прочитать файл по строкам и заполнить TreeMap идентификатором в качестве ключа и инвентаря в качестве значения. После заполнения TreeMap вы можете просто перебирать и печатать, чтобы подтвердить, что значения отсортированы. – prashant
Спасибо, кучка. Собираюсь делать это! Кажется, что я ищу. Опять же, спасибо –