<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FCollections%2FComparable_Interface</id>
		<title>Java Tutorial/Collections/Comparable Interface - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FCollections%2FComparable_Interface"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Collections/Comparable_Interface&amp;action=history"/>
		<updated>2026-04-19T07:02:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Collections/Comparable_Interface&amp;diff=4748&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Collections/Comparable_Interface&amp;diff=4748&amp;oldid=prev"/>
				<updated>2010-06-01T05:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:05, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Collections/Comparable_Interface&amp;diff=4747&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Collections/Comparable_Interface&amp;diff=4747&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Classes Implementing Comparable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Class          Natural Ordering&lt;br /&gt;
Byte            Signed numerical&lt;br /&gt;
Character       UnSigned numerical&lt;br /&gt;
Long            Signed numerical&lt;br /&gt;
Integer         Signed numerical&lt;br /&gt;
Short           Signed numerical&lt;br /&gt;
Double           Signed numerical&lt;br /&gt;
Float           Signed numerical&lt;br /&gt;
BigInteger      Signed numerical&lt;br /&gt;
BigDecimal       Signed numerical&lt;br /&gt;
Boolean         Boolean.FALSE &amp;lt; Boolean.TRUE&lt;br /&gt;
File            System-dependent lexicographic on path name&lt;br /&gt;
String           Lexicographic&lt;br /&gt;
Date           Chronological&lt;br /&gt;
CollationKey   Locale-specific lexicographic&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a Comparable object ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
import java.util.TreeSet;&lt;br /&gt;
class Employee implements Comparable {&lt;br /&gt;
  String department, name;&lt;br /&gt;
  public Employee(String department, String name) {&lt;br /&gt;
    this.department = department;&lt;br /&gt;
    this.name = name;&lt;br /&gt;
  }&lt;br /&gt;
  public String getDepartment() {&lt;br /&gt;
    return department;&lt;br /&gt;
  }&lt;br /&gt;
  public String getName() {&lt;br /&gt;
    return name;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;[dept=&amp;quot; + department + &amp;quot;,name=&amp;quot; + name + &amp;quot;]&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  public int compareTo(Object obj) {&lt;br /&gt;
    Employee emp = (Employee) obj;&lt;br /&gt;
    int deptComp = department.rupareTo(emp.getDepartment());&lt;br /&gt;
    return ((deptComp == 0) ? name.rupareTo(emp.getName()) : deptComp);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean equals(Object obj) {&lt;br /&gt;
    if (!(obj instanceof Employee)) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    Employee emp = (Employee) obj;&lt;br /&gt;
    return department.equals(emp.getDepartment()) &amp;amp;&amp;amp; name.equals(emp.getName());&lt;br /&gt;
  }&lt;br /&gt;
  public int hashCode() {&lt;br /&gt;
    return 31 * department.hashCode() + name.hashCode();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Employee emps[] = { &lt;br /&gt;
        new Employee(&amp;quot;Finance&amp;quot;, &amp;quot;A&amp;quot;), &lt;br /&gt;
        new Employee(&amp;quot;Finance&amp;quot;, &amp;quot;B&amp;quot;),&lt;br /&gt;
        new Employee(&amp;quot;Finance&amp;quot;, &amp;quot;C&amp;quot;), &lt;br /&gt;
        new Employee(&amp;quot;Engineering&amp;quot;, &amp;quot;D&amp;quot;),&lt;br /&gt;
        new Employee(&amp;quot;Engineering&amp;quot;, &amp;quot;E&amp;quot;), &lt;br /&gt;
        new Employee(&amp;quot;Engineering&amp;quot;, &amp;quot;F&amp;quot;),&lt;br /&gt;
        new Employee(&amp;quot;Sales&amp;quot;, &amp;quot;G&amp;quot;), &lt;br /&gt;
        new Employee(&amp;quot;Sales&amp;quot;, &amp;quot;H&amp;quot;), &lt;br /&gt;
        new Employee(&amp;quot;Support&amp;quot;, &amp;quot;I&amp;quot;), };&lt;br /&gt;
    Set set = new TreeSet(Arrays.asList(emps));&lt;br /&gt;
    System.out.println(set);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;[[dept=Engineering,name=D], [dept=Engineering,name=E], [dept=Engineering,name=F], [dept=Finance,name=A], [dept=Finance,name=B], [dept=Finance,name=C], [dept=Sales,name=G], [dept=Sales,name=H], [dept=Support,name=I]]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generic Comparable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
class Person implements Comparable&amp;lt;Person&amp;gt; {&lt;br /&gt;
  public Person(String firstName, String surname) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
    this.surname = surname;&lt;br /&gt;
  }&lt;br /&gt;
  public String getFirstName() {&lt;br /&gt;
    return firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public String getSurname() {&lt;br /&gt;
    return surname;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return firstName + &amp;quot; &amp;quot; + surname;&lt;br /&gt;
  }&lt;br /&gt;
  public int compareTo(Person person) {&lt;br /&gt;
    int result = surname.rupareTo(person.surname);&lt;br /&gt;
    return result == 0 ? firstName.rupareTo(((Person) person).firstName) : result;&lt;br /&gt;
  }&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private String surname;&lt;br /&gt;
}&lt;br /&gt;
class ComparePersons implements Comparator&amp;lt;Person&amp;gt; {&lt;br /&gt;
  // Method to compare Person objects - order is descending&lt;br /&gt;
  public int compare(Person person1, Person person2) {&lt;br /&gt;
    int result = -person1.getSurname().rupareTo(person2.getSurname());&lt;br /&gt;
    return result == 0 ? -person1.getFirstName().rupareTo(person2.getFirstName()) : result;&lt;br /&gt;
  }&lt;br /&gt;
  // Method to compare with another comparator&lt;br /&gt;
  public boolean equals(Object collator) {&lt;br /&gt;
    if (this == collator) { // If argument is the same object&lt;br /&gt;
      return true; // then it must be equal&lt;br /&gt;
    }&lt;br /&gt;
    if (collator == null) { // If argument is null&lt;br /&gt;
      return false; // then it can&amp;quot;t be equal&lt;br /&gt;
    }&lt;br /&gt;
    return getClass() == collator.getClass(); // Class must be the same for&lt;br /&gt;
                                              // equal&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Person[] authors = { new Person(&amp;quot;A&amp;quot;, &amp;quot;S&amp;quot;), &lt;br /&gt;
                         new Person(&amp;quot;J&amp;quot;, &amp;quot;G&amp;quot;),&lt;br /&gt;
                         new Person(&amp;quot;T&amp;quot;, &amp;quot;C&amp;quot;), &lt;br /&gt;
                         new Person(&amp;quot;C&amp;quot;, &amp;quot;S&amp;quot;),        &lt;br /&gt;
                         new Person(&amp;quot;P&amp;quot;, &amp;quot;C&amp;quot;), &lt;br /&gt;
                         new Person(&amp;quot;B&amp;quot;, &amp;quot;B&amp;quot;) };&lt;br /&gt;
    System.out.println(&amp;quot;Original order:&amp;quot;);&lt;br /&gt;
    for (Person author : authors) {&lt;br /&gt;
      System.out.println(author);&lt;br /&gt;
    }&lt;br /&gt;
    Arrays.sort(authors, new ComparePersons()); // Sort using comparator&lt;br /&gt;
    System.out.println(&amp;quot;\nOrder after sorting using comparator:&amp;quot;);&lt;br /&gt;
    for (Person author : authors) {&lt;br /&gt;
      System.out.println(author);&lt;br /&gt;
    }&lt;br /&gt;
    Arrays.sort(authors); // Sort using Comparable method&lt;br /&gt;
    System.out.println(&amp;quot;\nOrder after sorting using Comparable method:&amp;quot;);&lt;br /&gt;
    for (Person author : authors) {&lt;br /&gt;
      System.out.println(author);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Original order:&lt;br /&gt;
  A S&lt;br /&gt;
  J G&lt;br /&gt;
  T C&lt;br /&gt;
  C S&lt;br /&gt;
  P C&lt;br /&gt;
  B B&lt;br /&gt;
  Order after sorting using comparator:&lt;br /&gt;
  C S&lt;br /&gt;
  A S&lt;br /&gt;
  J G&lt;br /&gt;
  T C&lt;br /&gt;
  P C&lt;br /&gt;
  B B&lt;br /&gt;
  Order after sorting using Comparable method:&lt;br /&gt;
  B B&lt;br /&gt;
  P C&lt;br /&gt;
  T C&lt;br /&gt;
  J G&lt;br /&gt;
  A S&lt;br /&gt;
  C S&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Sort on many(more than one) fields ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.ruparator;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
class Person implements Comparable {&lt;br /&gt;
  String firstName, lastName;&lt;br /&gt;
  public Person(String f, String l) {&lt;br /&gt;
    this.firstName = f;&lt;br /&gt;
    this.lastName = l;&lt;br /&gt;
  }&lt;br /&gt;
  public String getFirstName() {&lt;br /&gt;
    return firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLastName() {&lt;br /&gt;
    return lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;[ firstname=&amp;quot; + firstName + &amp;quot;,lastname=&amp;quot; + lastName + &amp;quot;]&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  public int compareTo(Object obj) {&lt;br /&gt;
    Person emp = (Person) obj;&lt;br /&gt;
    int deptComp = firstName.rupareTo(emp.getFirstName());&lt;br /&gt;
    return ((deptComp == 0) ? lastName.rupareTo(emp.getLastName()) : deptComp);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean equals(Object obj) {&lt;br /&gt;
    if (!(obj instanceof Person)) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    Person emp = (Person) obj;&lt;br /&gt;
    return firstName.equals(emp.getFirstName()) &amp;amp;&amp;amp; lastName.equals(emp.getLastName());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class PersonComparator implements Comparator&amp;lt;Person&amp;gt; {&lt;br /&gt;
  public int compare(Person emp1, Person emp2) {&lt;br /&gt;
    int nameComp = emp1.getLastName().rupareTo(emp2.getLastName());&lt;br /&gt;
    return ((nameComp == 0) ? emp1.getFirstName().rupareTo(emp2.getFirstName()) : nameComp);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    ArrayList&amp;lt;Person&amp;gt; names = new ArrayList&amp;lt;Person&amp;gt;();&lt;br /&gt;
    names.add(new Person(&amp;quot;E&amp;quot;, &amp;quot;T&amp;quot;));&lt;br /&gt;
    names.add(new Person(&amp;quot;A&amp;quot;, &amp;quot;G&amp;quot;));&lt;br /&gt;
    names.add(new Person(&amp;quot;B&amp;quot;, &amp;quot;H&amp;quot;));&lt;br /&gt;
    names.add(new Person(&amp;quot;C&amp;quot;, &amp;quot;J&amp;quot;));&lt;br /&gt;
    Iterator iter1 = names.iterator();&lt;br /&gt;
    while (iter1.hasNext()) {&lt;br /&gt;
      System.out.println(iter1.next());&lt;br /&gt;
    }&lt;br /&gt;
    Collections.sort(names, new PersonComparator());&lt;br /&gt;
    Iterator iter2 = names.iterator();&lt;br /&gt;
    while (iter2.hasNext()) {&lt;br /&gt;
      System.out.println(iter2.next());&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
[ firstname=E,lastname=T]&lt;br /&gt;
[ firstname=A,lastname=G]&lt;br /&gt;
[ firstname=B,lastname=H]&lt;br /&gt;
[ firstname=C,lastname=J]&lt;br /&gt;
[ firstname=A,lastname=G]&lt;br /&gt;
[ firstname=B,lastname=H]&lt;br /&gt;
[ firstname=C,lastname=J]&lt;br /&gt;
[ firstname=E,lastname=T]&lt;br /&gt;
*/&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>