Как добавить объект в массив - Java?

712
19 сентября 2017, 06:58

Изучал C++, сейчас изучаю JAVA. Дали задание: создать класс и второй класс(в этом классе должны быть методы), который им управляет. Кажется ничего сложного, но сказали код удаления и добавления объекта писать самому. Как я узнал в JAVA все массивы статические, то есть у них определенный размер (не подходит). Придется использовать ArrayList, но у него эти методы написаны. Как написать эти методы самому не нашел. Нашел код этих методов, который в компиляторе написан, и просто не смог разобраться. Но как я понял, метод копирования объекта вообще на другом языке написан. Пытался в лоб увеличить, не получается (не понимаю, как через ArrayList до массива с моими объектами достучаться).

Подскажите куда копать, может я вообще туплю и все проще?
Вот все что адекватно работает, но это смешно:

public static void Myadd (ArrayList<FootballMan> b, FootballMan a) {
    b.add(a);
}

Про удаление: максимум, что я могу, это тоже самое что и с добавлением.

Полный код программы(intellij idea) :

import  java.util.Scanner;
public class   FootballMan {
private String surname,  name, patronymic, data ,command,experience;
private int profit,intendifer;
FootballMan(FootballMan a){
    profit=a.profit;
    intendifer=a.intendifer;
    surname=a.surname;
    name=a.name;
    patronymic=a.patronymic;
    data=a.data;
    command=a.command;
    experience=a.experience;
}
FootballMan(){
    Scanner str =new Scanner(System.in);
    Scanner str1 =new Scanner(System.in);
    System.out.print("Введите идентификатор спортсмена:");
    intendifer=str.nextByte();
    System.out.print(" ФИО (через пробел):");
    surname=str.next();
    name=str.next();
    patronymic=str.next();
    System.out.print("Дата рождения:");
    data=str1.nextLine();
    System.out.print("Команда за которую выступает спортсмен ");
    command=str1.nextLine();
    System.out.print("Стаж игры:");
    experience=str1.nextLine();
    System.out.print("Заработная плата:");
    profit= str1.nextInt();
}
FootballMan(int intendifer,int profit,String surname,String name,String 
patronymic,
            String data , String command , String experience){
    this.intendifer=intendifer;
    this.profit=profit;
    this.surname=surname;
    this.name=name;
    this.patronymic=patronymic;
    this.data=data;
    this.command=command;
    this.experience=experience;
}
public  int getI(){
    return intendifer;
}
public void setI(byte intendifer){
    this.intendifer=intendifer;
}
public  String getS(){
    return surname;
}
public void setS(String surname){
    this.surname=surname;
}
public  String getN(){
    return name;
}
public void setN(String name){
    this.name=name;
}
public  String getP(){
    return patronymic;
}
public void setP(String patronymic){
    this.patronymic=patronymic;
}
public  String getD(){
    return data;
}
public void setD(String data){
    this.data=data;
}
public  String getC(){
    return command;
}
public void setC(String command){
    this.command=command;
}
public  String getE(){
    return experience;
}
public void setE(String experience){
    this.experience=experience;
}
public  int getProfit(){
    return profit;
}
public void setProfit(int profit){
    this.profit=profit;
}
            }

import java.util.ArrayList;
import  java.util.Scanner;

public class Manager {

public  static void sort(FootballMan[] arr) {
    FootballMan temp=new FootballMan(5,5,"ad","ad","ad","ad","ad","ad");
    for (int i = arr.length - 1; i > 0; i--) {
        for (int j = 0; j < i; j++) {
            if (arr[j].getProfit() < arr[j + 1].getProfit()) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
public  static void search(FootballMan[] arr) {
    int cod;
    System.out.print("Введите индентификатор игрока:");
    Scanner ad = new Scanner(System.in);
    cod = ad.nextInt();
    for(int i=0 ; i<arr.length;i++)
    {if(arr[i].getI()==cod)
        System.out.print(arr[i].getN()+" "+arr[i].getS()+" "+arr[i].getP());
    break;}
}
public  static void editing(FootballMan[] arr,int cod) {
    String comand;
    int i, zp;
    byte key;
    for (i = 0; i < arr.length; i++) {
        if (arr[i].getI() == cod)
            break;
    }
    System.out.println("1-Изменить запрлату игрока");
    System.out.println("2-Изменить команду");
    Scanner scan = new Scanner(System.in);
    Scanner scan1 = new Scanner(System.in);
    key = scan.nextByte();
    if (key == 1) {
        System.out.print("Введите желаемую зарплату:");
        zp = scan.nextInt();
        arr[i].setProfit(zp);
    } else {
        System.out.println("Введите команду:");
        comand = scan1.nextLine();
        arr[i].setC(comand);
    }
}
 public static void Myadd (ArrayList<FootballMan> b,FootballMan a){
 b.add(a);
  }
}


import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
    FootballMan obj = new FootballMan(33, 5, "a2d", "ad", "3ad", "ad", 
   "ad1", "ad");
    ArrayList<FootballMan> arr = new ArrayList<>();
    arr.add(obj);
  }
  }

Задание:

Answer 1

ArrayList - вполне подходит для решения задачи, если можно и нужно хранить повторяющиеся объекты FootballMan. То есть в нем можно хранить список ваших FootballMan-объектов.

Будет примерно так:

public class Manager {
    private List<FootballMan> list = new ArrayList<FootballMan>();
    public Manager() {}
    public void setFootballMan(FootballMan footballMan) {
       list.add(footballMan);
    }
    public void getFootballById(int id) {
       list.get(id);
    }
    public FootballMan findFootballById(какие-то параметры для поиска) {
       ...поиск...
       list.get(n);
    }
    public void delFootballById(какие-то параметры) {
       ...поиск...
       list.remove(n);
    }
}
READ ALSO
как распарсить json

как распарсить json

Работаю с wiki api, моя задача получить url страницы по idИспользую retrofit2

694
Перевод unix time в date

Перевод unix time в date

Помогите разобраться с отрисовкой графиков через graph viewИмеется время в unix time

546
Проверка permissions на телефонах Xiaomi для API&lt;23

Проверка permissions на телефонах Xiaomi для API<23

Как известно у Xiaomi есть своя система разрешений и работает она до 6 андроида, где новая система запроса разрешений появилась повсеместноЯ...

388
Eclipse RCP создание нового окна

Eclipse RCP создание нового окна

В главном окне (которое появляется после запуска приложения) я должен сделать главное меню, в нем должен быть раздел window, в этом разделе я должен...

251