import java.util.ArrayList;
import java.util.Collections;

public class ComplexNumbers implements Comparable<ComplexNumbers>{

	private double myR, myI;

	public ComplexNumbers(double r, double i)
	{
		myR = r;
		myI = i;

	}
	
	public static void main(String[] args) {
		ArrayList<ComplexNumbers> list = new ArrayList<ComplexNumbers>();
		
		System.out.println("Test 1: .equals()");
		ComplexNumbers a = new ComplexNumbers(5,5);
		ComplexNumbers b = new ComplexNumbers(5,5);
		
		if(a.equals(b))
			System.out.println("equal");
		else
			System.out.println("not equal");
		
		System.out.println("Test 2: .compareTo()");
		list.add(new ComplexNumbers(0,0));
		list.add(new ComplexNumbers(0,100));
		list.add(new ComplexNumbers(-5,7));
		list.add(new ComplexNumbers(-89,2));
		Collections.sort(list);
		System.out.println(list);
	}

	public String toString()
	{
		return "<" + myR + "," + myI + ">";
	}
	
	@Override
	public boolean equals(Object obj){
		if (obj == this) {
            return true;
        }
        if (obj == null || obj.getClass() != this.getClass()) {
            return false;
        }

        ComplexNumbers temp = (ComplexNumbers) obj; //cast object to ComplexNumbers type
        
        //your code goes here
        if( (this.myR == temp.myR) && (this.myI == temp.myI))
        	return true;
        else
        	return false;
	}
	
	public int compareTo(ComplexNumbers arg0) {
		double mag1 = Math.sqrt((this.myI * this.myI) + (this.myR * this.myR));
		double mag2 = Math.sqrt((arg0.myI * arg0.myI) + (arg0.myR * arg0.myR));
		
		double sum = mag1-mag2;
		if(sum == 0)
			return 0;
		if(sum > 0)
			return 1;
		else
			return -1;
		
	}
}
