Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как отсортировать список,что бы начало работы началось с определенного года?

Артем Колегов Ученик (175), на голосовании 1 месяц назад
Есть ArrayList с ФИО, зарплатой и датой начала работы. Как отсортировать список так, что бы были только те, кто начал работать в 2017.
Код первого класса:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util(точка)stream.Stream;

public class Main
{
private static String staffFile = "data/staff.txt";
private static String dateFormat = "dd.MM.yyyy";

public static void main(String[] args)
{
ArrayList<Employee> staff = loadStaffFromFile();
}

private static ArrayList<Employee> loadStaffFromFile()
{
ArrayList<Employee> staff = new ArrayList<>();
try
{
List<String> lines = Files.readAllLines(Paths.get(staffFile));
for(String line : lines)
{
String[] fragments = line.split("\t");
if(fragments.length != 3) {
System.out.println("Wrong line: " + line);
continue;
}
staff.add(new Employee(
fragments[0],
Integer.parseInt(fragments[1]),
(new SimpleDateFormat(dateFormat)).parse(fragments[2])
));
}
}
catch (Exception ex) {
ex.printStackTrace();
}
return staff;
}
}
Код второго класса:
import java.text.SimpleDateFormat;
import java(точка)util.Date;

public class Employee
{
private String name;
private Integer salary;
private Date workStart;

public Employee(String name, Integer salary, Date workStart)
{
this(точка)name = name;
this.salary = salary;
this.workStart = workStart;
}

public String getName() {
return name;
}

public void setName(String name) {
this(точка)name = name;
}

public Integer getSalary() {
return salary;
}

public void setSalary(int salary) {
this.salary = salary;
}

public Date getWorkStart() {
return workStart;
}

public void setWorkStart(Date workStart) {
this.workStart = workStart;
}

public String toString()
{
return name + " - " + salary + " - " +
(new SimpleDateFormat("dd.MM.yyyy")).format(workStart);
}
}
Список в виде txt:
Дмитриев Василий 78000 12.07.2016
Алексей Ивлиев 125000 11.11.2018
Анна Сетяева 140000 10.05.2012
Дмитрий Кочергин 140000 31.01.2017
Михаил Быковский 78000 10.02.2018
Артём Фигурнов 78000 22.04.2018
Марина Евстафьева 95000 17.03.2017
Павел Смородинов 88000 19.09.2018
Жанна Ковалёва 78000 20.02.2018
Степан Богданов 140000 17.04.2016
Виктор Рязанов 95000 20.03.2017
Савелий Фёдоров 115000 07.05.2019
Андрей Леонов 88000 16.12.2017
Татьяна Рыхальская 95000 10.10.2018
Анастасия Бернадо 78000 05.06.2015
Евгений Алфёров 105000 12.08.2016
Голосование за лучший ответ
Александр Искусственный Интеллект (292144) 2 месяца назад
не отсортировать, а отфильтровать....

 public List employeesByYearStarted(List staff, int year) { 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
return staff
.stream()
.filter(s -> sdf.format(s.getWorkStart()) == year)
.collect(Collectors.toList());
}
Похожие вопросы