2017-01-06 5 views
0

В настоящее время я пытаюсь закодировать календарь. Я сохраняю свои Назначения в двух разных ArrayLists в другом ArrayList.Как сравнить Int's между ArrayLists в ArrayLists? (java)

Струны (Тема, Место, Люди) идут в первый ArrayList в другой ArrayList = arStr
Целые (Дата и время) перейти во второй ArrayList в другой ArrayList = arInt

Когда я создаю встречу I хотите сортировать его в соответствии с датой. Поэтому, если я хочу добавить новое Назначение, оно должно быть сохранено выше или ниже сохраненных (в зависимости от времени) в списке Outter. Уже сохраненные должны быть в списке Outter List, если их дата будет позже новой. После этого я хочу связать назначение строки с назначением Int.

Моя проблема в том, что я не могу найти способ сортировать их таким образом, может ли кто-нибудь помочь мне PLS :)?

public class Calender 
{ 
public static ArrayList<ArrayList<Integer>> arInt = new ArrayList<ArrayList<Integer>>();   
public static ArrayList<ArrayList<String>> arStr = new ArrayList<ArrayList<String>>(); 
public static Scanner read = new Scanner(System.in); 
public static int counter = 0; // counts all made appointments 

public static void main (String[]args) 
    { 
    //Adding Arrylists for space  
    arInt.add(new ArrayList()); 
    arStr.add(new ArrayList()); 
    arInt.add(new ArrayList()); 
    arStr.add(new ArrayList()); 

    // This is one Appointment (Subject, Year, Month, Day, Hour) 
    // Already saved Appointment 
    counter++; 
    arStr.get(0).add("3.Liste"); 
    arInt.get(0).add(2017); 
    arInt.get(0).add(2); 
    arInt.get(0).add(8); 
    arInt.get(0).add(16); 

    // new Appointment 
    counter++;   
    String betreff = "1. Appointment"; 
    int year = 2017; 
    int month = 2; 
    int day = 8; 
    int hours = 15;  

    // How to compare these Variables with the first Appointment and save it accordigly ? 

    } 
} 

ответ

4

Мое предложение заключается в создании нового класса Appointment, присвоить ему LocalDateTime и пусть Календарным хранить список этого типа, такие как List<Appointment> appointments = new ArrayList<>().

Затем легко сортировать назначения, используя встроенный метод сортировки и собственный компаратор:

appointments.sort((a1, a2) -> a1.date.isBefore(a2.date));)

В любом случае, я предлагаю вам сделать учебник по объектно-ориентированному проектированию первым , например https://www.tutorialspoint.com/object_oriented_analysis_design/index.htm.

+0

Так что, в принципе, у меня просто один ArrayList, который составлен из Назначений? Thx за вашу помощь! – Coldvirus

+0

Просто предложение. Конечно, реальная полномасштабная реализация Календаря может быть намного сложнее; но если ваша задача - хранить некоторые встречи, да, я бы сделал это так. – Halmackenreuter

+0

Он не знает, что это что-то изменит, но все операции включают удаление встречи, изменение Назначения и, да, это: «D – Coldvirus

0

Во-первых, у вас есть ArrayList s в пределах других ArrayList s, которые в этом случае совершенно не нужны. Удаление этих данных значительно упрощает ваш код:

public class Calender 
{ 
    public static ArrayList<Integer> arInt = new ArrayList<>();   
    public static ArrayList<String> arStr = new ArrayList<>(); 
    public static Scanner read = new Scanner(System.in); 
    public static int counter = 0; // counts all made appointments 

    public static void main (String[]args) 
    { 
     // This is one Appointment (Subject, Year, Month, Day, Hour) 
     // Already saved Appointment 
     counter++; 
     arStr.add("3.Liste"); 
     arInt.add(2017); 
     arInt.add(2); 
     arInt.add(8); 
     arInt.add(16); 

     // new Appointment 
     counter++;   
     String betreff = "1. Appointment"; 
     int year = 2017; 
     int month = 2; 
     int day = 8; 
     int hours = 15;  

     // How to compare these Variables with the first Appointment and save it accordigly ? 
    } 
} 

В качестве следующего шага вы захотите объединить эти два списка. В настоящее время у вас есть один список дат и отдельный список назначений. Вам нужен один список назначений. Для этого вам нужно будет написать класс Назначение:

public class Appointment 
{ 
    private String name; 
    private Date date; 

    // and so on 
} 

тогда Вы сможете создать ArrayList тех:

ArrayList<Appointment> appointments = new ArrayList<>(); 

Чтобы иметь возможность сортировать список различными способами вы можете использование:

Collections.sort(appointments, aCustomComparator); 

Чтобы выполнить это, вам нужно будет написать свой собственный «компаратор». Это в основном функция, которая сравнивает два объекта, чтобы увидеть, какой из них будет первым. Выходит 1 января до 3 января? Такого рода вещи.

См. this answer или Google «напишите пользовательский компаратор java» для получения дополнительной информации.

+0

Это действительно полезно, спасибо.Тем не менее, я не понимаю ничего, если можно сказать, что все даты и время сохраняются в одном ArrayListInt, как я смогу сортировать их в нужном месте? Thx за вашу помощь (Y) – Coldvirus

+0

Не было бы 'ArrayListInt'. Вы должны создать один 'ArrayList ' под названием 'tasksments'. Вы вставляете в это разные объекты «Назначения»: 'assignments.add (новое назначение (« мое имя », somedate)». Затем отсортируйте его, как хотите. – Michael

+0

oooohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh, спасибо большое! – Coldvirus

Смежные вопросы