В моей программе есть каталог объектов, каждый из которых содержит такие вещи, как названия, номера элементов, исполнители песен и т. Д. Мне нужно взять уже написанный код и изменить метод addItem, чтобы он не просто помещал элемент в конец элемента. массив, но вместо этого помещает его в правильное место в массиве, чтобы он оставался отсортированным. Я пытаюсь сделать это, сравнивая тип элемента сначала в алфавитном порядке (книга, фильм или музыка), и если они совпадают, то я буду сравнивать по номеру элемента. Я не сортирую весь массив после вставки объекта, поэтому я знаю, что мне нужен только один цикл, а не два вложенных. Единственное, что я видел, это можно сделать только в том случае, если сам массив является одним из аргументов метода, поэтому заголовок метода будет выглядеть примерно так:
public static void insertionSort (Comparable[] list)
однако мне нужносделайте это, не меняя ни один из моих заголовков метода, потому что, если я делаю id, тогда нужно изменить их в моем основном методе. мой метод добавления выглядит так прямо сейчас. единственный параметр - это новый объект, который добавляется в массив.
public void addItem(Item theItem)
{
items[size] = theItem;
size++;
}
//This Is a class for a general Item
public class Item implements Comparable<Item>
{
// instance variables - replace the example below with your own
private int itemnum;
private String title;
private double price;
/**
* Constructor for objects of class Item
*/
public Item(int id, String t, double p)
{
// initialise instance variables
itemnum = id;
title = t;
price = p;
}
/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public int getItemNumber()
{
// put your code here
return itemnum;
}
public String getItemType()
{
return "Item";
}
public String getItemTitle()
{
return title;
}
public String toString()
{
String line1, line2, line3, line4, out;
String itemtype = this.getItemType();
line1 = String.format("Item number: %d%n", itemnum);
line2 = String.format("Item type: %s%n", itemtype);
line3 = String.format("Item title: %s%n", title);
line4 = String.format("Item price: %.2f%n", price);
out = line1 + line2 + line3 + line4 + "\n";
return out;
}
public int compareTo(Item other){
//items are equal
if(this.getItemType().equals(other.getItemType())){
return this.itemnum - other.itemnum;
}
//item types are not equal
else
return this.getItemType().compareTo(other.getItemType());
}
}
Как создать метод для вставки объекта в массив в правильную позицию, используя только сам объект в качестве параметра?