Лучший способ справиться с этим типом требований - определить класс с полями, которые вы хотите записать в файл. Следующим шагом является добавление всех желаемых записей в список и сортировка записей в соответствии с вашими требованиями. Наконец, выполните итерацию списка и запишите записи из него в файл. Ниже приведен пример кода:
Класс со всеми обязательными полями:
class Member {
int userId;
String firstName, lastName, status;
int roleId;
public Member(int userId, String firstName, String lastName, String status, int roleId) {
this.firstName = firstName;
this.lastName = lastName;
this.status = status;
this.userId = userId;
this.roleId = roleId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
}
Класс записи файла:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MemberWriter {
public static void main(String[] args) {
FileWriter writer;
try {
writer = new FileWriter(new File("members.txt"));
List<Member> list = new ArrayList<Member>();
list.add(new Member(2025, "A", "B", "Active", 3));
list.add(new Member(2021, "C", "D", "InActive", 2));
list.add(new Member(2036, "E", "F", "Active", 1));
list.add(new Member(3012, "G", "H", "Active", 2));
list.add(new Member(5012, "I", "J", "InActive", 1));
Comparator<Member> comparator = Comparator.comparing(Member::getStatus).thenComparing(Member::getRoleId)
.thenComparing(Member::getUserId);
Collections.sort(list, comparator);
writer.write("UserId\tFirstName\tLastName\tStatus\tRoleId\n");
for (Member member : list) {
writer.write(member.getUserId() + "\t" + member.getFirstName() + "\t" + member.getLastName() + "\t"
+ member.getStatus() + "\t" + member.getRoleId() + "\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Не стесняйтесь комментировать в случае сомнений.