Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package u7;
- import java.text.Collator;
- import java.text.CollationKey;
- import java.util.*;
- class Person implements Comparable<Object>
- {
- private final String firstName;
- private final String lastName;
- private final Collator collator = Collator.getInstance(Locale.getDefault());
- private final CollationKey sortLastNameKey;
- private final CollationKey sortFirstNameKey;
- private int age;
- public Person (String fName, String lName, int Age)
- {
- firstName = fName;
- lastName = lName;
- age = Age;
- sortLastNameKey = collator.getCollationKey(lastName.toUpperCase() + " " + firstName.toUpperCase());
- sortFirstNameKey = collator.getCollationKey(firstName.toUpperCase() + " " + lastName.toUpperCase());
- }
- public CollationKey getFirstNameKey()
- {
- return sortFirstNameKey;
- }
- public CollationKey getLastNameKey()
- {
- return sortLastNameKey;
- }
- public String getFirstName()
- {
- return firstName;
- }
- public String getLastName()
- {
- return lastName;
- }
- public int getAge()
- {
- return age;
- }
- public int compareTo(Object anotherPerson)throws ClassCastException
- {
- if (!(anotherPerson instanceof Person))
- {
- throw new ClassCastException("A Person.object expected");
- }
- int anotherPersonAge=((Person)anotherPerson).getAge();
- return this.age-anotherPersonAge;
- }
- public String toString()
- {
- return "First name: " + firstName + ", Last name: " + lastName + ", Age: " + age;
- }
- }
- class LastNameComparator implements Comparator<Object>
- {
- public int compare(Object person,Object anotherPerson)
- {
- int res=((Person)person).getLastName().compareTo(((Person)anotherPerson).getLastName());
- if(res==0)
- {
- res=((Person)person).getFirstName().compareTo(((Person)anotherPerson).getFirstName());
- }
- return res;
- }
- }
- class FirstNameComparator implements Comparator<Object>
- {
- public int compare(Object person,Object anotherPerson)
- {
- int res=((Person)person).getFirstName().compareTo(((Person)anotherPerson).getFirstName());
- if(res==0)
- {
- res=((Person)person).getLastName().compareTo(((Person)anotherPerson).getLastName());
- }
- return res;
- }
- }
- class User extends Person implements Comparable<Object>
- {
- private final String u_name;
- private final String u_password;
- public User (String uName, String uPass, String fName, String lName, int Age)
- {
- super(fName, lName, Age);
- u_name=uName;
- u_password=uPass;
- }
- String getu_name()
- {
- return u_name;
- }
- String getu_password()
- {
- return u_password;
- }
- public boolean equals (Object o)
- {
- return getu_name().equals(((User)o).getu_name())&& getu_password().equals(((User)o).getu_password());
- }
- public String toString()
- {
- return "Username: " + u_name+ ", Personal data: " + super.toString() + "\n";
- }
- public int compareTo(Object o)
- {
- int res=getu_name().compareTo(((User)o).getu_name());
- if (res==0)
- {
- res=getu_password().compareTo(((User)o).getu_password());
- }
- return res;
- }
- }
- public class UsersGroup
- {
- private final String groupName;
- private final List<User>users=new Vector<User>();
- public UsersGroup(String gName)
- {
- groupName=gName;
- }
- public void addUser(User o)
- {
- users.add(o);
- }
- public void sortByLastName()
- {
- Collections.sort(users,new LastNameComparator());
- }
- public void sortByFirstName()
- {
- Collections.sort(users,new FirstNameComparator());
- }
- public void sortByUserName()
- {
- Collections.sort(users);
- }
- public String toString()
- {
- return "Group: " + groupName + users;
- }
- public static void main(String[]args)
- {
- UsersGroup FirstGroup=new UsersGroup("Grupa 1");
- FirstGroup.addUser(new User("user1","pass1","Иван","Петров",25));
- FirstGroup.addUser(new User("user2","pass2","Иван","Тодоров",22));
- FirstGroup.addUser(new User("user3","pass3","Кристиян","Петров",23));
- FirstGroup.addUser(new User("user4","pass4","Иван","Иванов",21));
- System.out.println(FirstGroup);
- FirstGroup.sortByLastName();
- System.out.println(FirstGroup);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement