Comparing 100 Objects Using Comparator Interface In Java?
Jul 4, 2014Is it possible to compare 100 objects using comparator interface in java?
View RepliesIs it possible to compare 100 objects using comparator interface in java?
View Repliesoverriding of the compare method.
Here's an example I found:
public class Someone {
String name;
int age;
ArrayList <Someone> listarr = new ArrayList <Someone>();
public Someone(String name1, int age1) {
name = name1;
age = age1;
[code]...
1. In the compare method, what happens when it returns one of the 0, -1, or 1? How does returning such values contribute to the sorting process? How does it take in information (like I know it does through the parameters, but how exactly)?
2. Why do we use the class name for the generics?
Something about implementing Comparator interface isn't very clear to me: overriding the compare method.
Like here for example:
//This sorts a list of objects holding information based on age: the name and the age of the person
public class Person {
String name;
int age;
public Person (String name, int age)
{
this.name = name;
this.age = age;
[Code] ....
What exactly is happening behind the scenes? I don't understand mostly the part where it returns a 0, a 1, or a -1. After it returns one of those values, what really happens next?
For the displaying of the list, is the method toString() being accessed to output the list in the System.out.println statement?
For the generics, why do we use Person?
Ok here are my 2 Classes
Both have Identical Fields
package com.Lists;
public class EmployeeOffice implements EmpInterface {
private double salary;
private String name;
private String postion;
private double hoursWorked;
[Code] .....
So if i wanna sort this Generic class using comaparator what do i do... I cant find an answer to this... I wanna sort them on the basis of salary what to do ...
I'm working on a program with the following instructions: Write a class named Octagon that extends GeometricObject and implements the Comparable and Cloneable interfaces. Assume that all 8 sides of the octagon are of equal size. The area can be computed using the following formula
area = (2 + 4/square root of 2) * side * side
Write a program (driver) to read in a series of values from a file, display the area and perimeter, create a clone and compare the object and its clone (based on the area). In addition, your program should compare the current object (just read in) with the first object read in. The program ends when a negative number is read from the file.
My GeometricObject abstract class:
public abstract class GeometricObject {
public abstract double getArea();
public abstract double getPerimeter();
}
My Octagon Class:
public class Octagon extends GeometricObject implements Comparable<Octagon> {
private double side = 1.0;
protected native Object clone() throws CloneNotSupportedException;
public Octagon() {
}
public Octagon(double side) {
super();
[code]....
As you can tell, I've still got a long way to go in the tester class but this is where I'm running into some difficulties.
You'll notice that in the return statement of the toString method in the Octagon class, I put a ? after the "Clone Compare:" portion of the code, what should go here. I've never worked with either the Comparable or Cloneable interfaces before.
How I should create my objects in a way that would give the following sample output.
Object 1: Area: 120.71
Perimeter: 40.0
Clone Compare: Equal
First Compare: Equal
Object 2: Area: 271.60
Perimeter: 60.0
Clone Compare: Equal
First Compare: First is smaller
I am writing a short program to find the zodiac of a given birth date. I am checking to see if a calendar object falls between to other objects to see if the date falls within a certain zodiac sign. To accomplish this, I have the user enter a date, then that date is compared to dates taken from an array. The problem is sometimes the comparison doesnt seem to work work, giving the wrong zodiac. For example if I enter 03/28/1968, it finds Aries, as expected. However if I enter 03/20/1968, it returns Aries also, when it should return Pisces. Here is the sample code.
private static String determineSign(Date birthdate, String[][] zodiac) throws ParseException {
// TODO Auto-generated method stub
Date date = birthdate;
for (int row = 0; row < zodiac.length; row++)
{
DateFormat date3 = new SimpleDateFormat("MM/dd");
Calendar compDate3 = Calendar.getInstance();
[Code] .....
This is the class that creates the table used for the zodiac dates -
public class ZodiacTable {
static final int ROWS = 12;
static final int COLUMNS = 3;
//private ArrayList<String> zodiacNames;
private String[][] zodiacNames;
[Code] ....
I cant seem to see why it returns the wrong zodiac..
I have an assignment where I need to add an interface to an already-created program. I have an array of objects, where each object has a name, price, and priority.
In my original program (which worked), I had all of the objects in 1 class. The professor said that I should split up the name/price/priority into 3 different classes. So what I have is an array that belongs to an interface, and name/price/priority implements. But I am having trouble loading the data into the array (from another class) once I am done with loading name.
Here is what I have so far.
public class Main {
public static void main (String[] args){
Interface[] arr = new Interface[7];
Scanner keyboard = new Scanner(System.in);
System.out.println
[code]....
Line 18 in the ItemName class is giving me an error, and I know it is because arr is of type Interface, and I am trying to assign is a String. But I don't know how to do this. In my original program I was able to do arr[x].getName(); but when I do that in Main, I get errors.
how to assign to an interface array from multiple classes.
if some of you worked with Unity Game engine (C#) the idea is that game has main loop and once per cycle it call for example Update() method in all objects which implement certain interface.
I would like to repeat such pattern in Java for another another program, not even game related, but I would still need a main loop and event driven behaviour with async call backsSo question is how to implement the fallowing scenario:
Imagine i have interface which implement some methods and one of them is Execute()
I have the main controller class which implement main loop, also multiple other classes which implement the same interface with method Execute(). How can i call this Execute() method on all objects which implement that interface each loop cycle?
Should i keep and track reference of each object which was implemented with this interface and go through inner "for" loop trough each reference and call manually Execute() method in each of them?what if each object implementing interface have to run Execute() method simultaneously? in parallel independent from each other?
Referring back to Unity engine and their Update() method - there is exactly the same situation:you can have multiple objects with script attached, thats script implement interface which has multiple methods and one of them is Update() and once per cycle all objects with that Update() method will be executed in parallel independently
I have a java code that should sort an array of names based on the last name. e.g jane a, jane b, jane z, jane d should be jane a, jane b, jane d, jane z. I have the following code but for some reasons, the s1 in the comparator method is always null.
public class ShuffleName {
public static void sortNames(String[] names){
Arrays.sort( names, new Comparator<String>() {
public int compare( String s1, String s2 ) {
String s1last = s1.split("s+")[1];
String s2last = s2.split("s+")[1];
return s1last.compareTo(s2last);
[code]....
I want to check to see if given integers digits a, b are both positive or both negative. How do i do that in java.
how to check below number 'a' is negative or not in if condition using signum method?
if(Integer.signum(a)==-1){
Above line is not working
I am trying to sort an ArrayList of objects with the comparator as I want to sort based on a certain value for each object. I understand I would need to override compareTo() in the objects class, is there any way I can get around also needing to override for all subclasses of the object?
View Replies View RelatedI read the document [URL] ....
But I am not able to get what is actual use of this in set ?
I am asked to create a code that if a user enters 1 it will use the object natural comparison form ('default') as written in CompareTo method.But if he chooses to enter something else then another comparison is used.Maybe I just need to use 2 diff comparators? but then what;s the point of defining something as 'default'....
View Replies View RelatedI am having a hard time trying to understand interface concept.
-what is an interface?
-What the use of an interface?
-what does implement or to implement means?
-What does implementation means?
I have 2 files which are as follows:
ICharacterReader.java::
import java.io.EOFException;
public interface ICharacterReader {
char GetNextChar() throws EOFException;
void Dispose();
}
And another file:
SimpleCharacterReader.java::
import java.io.EOFException;
import java.util.Random;
public class SimpleCharacterReader implements ICharacterReader {
private int m_Pos = 0;
[Code] ....
My task is as follows:
1.) Write a class that takes an ICharacterReader interface as an argument and returns a list of word frequencies ordered by word count and then alphabetically.
And also write a main method of a console application that exercises this class using a SimpleCharacterReader, and prints the output to the console.
For example, if the stream returns "It was the best of times, it was the worst of times" then the output will be:
it - 2;
of - 2;
the - 2;
times -2;
was - 2;
best - 1;
worst - 1;
2.) Test the answers in part 1, by writing unit test cases.
How to pass interface as an argument and what is meant by "writing unit test case"?
If an array has been sorted using a comparator then why is it necessary to pass on that comparator to the binaryserach method. What I want to know is that how come the presence of a comparator reference affect the way the algorithm works?
View Replies View Relatedwhy don't I define my methods in a class, rather than going a level up and declaring it first in an abstract class/interface? If the point is to have different implementations for different needs, then we have the option to override the methods.
View Replies View RelatedI am absolutely new to Java. I am creating a Servlet and getting the error interface is expected here.
I am using IntelliJ 14.
My Servlet code is as follows:-
package ERPdetector;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class ErpServlet implements HttpServlet {
[Code] ....
Which of the following classes uses Comparable and Comparator?
QueueTreeSetStackPriorityQueue
In the above question, what does 'uses' mean? Does it mean do above classes implement Comparable and Comparator?
I know that in order to compare any two elements stored in one of the above classes, we need to make the elements' class to implement one of these - either Comparable or Comparator.
I was going through some lectures online and found that to compare or even swap, the use of comparable or comparator argument like
public static boolean less(Comparable v,Comparable w)
{
return v.compareTo(w)<0;
}
public static void swap(Comparable []a,int i,int j)
{
Comparable swap=a[i];
a[i]=a[j];
a[j]=swap;
}
I did not get the use of passing Comparable or Comparator to the function as parameters. Object as parameter could have been used too?
So I created an interface which has the method
int getCalls();
I am trying to implement this method in another class but I'm not sure how to do so. My attempt is:
public getCalls(){ return getCalls(); }
When I run the program it sends the following exception:
Exception in thread "main" java.lang.StackOverflowError
at FibonacciForget.getCalls(FibonacciForget.java:14)
and it highlights the [return getCalls();] part.
What is the correct way to implement the getCalls() method?
how to do multiple inheritance without sing interface in java?
View Replies View RelatedSo I built this comparator exactly the same way I built my others that are working.But the comparator for UserComparator is not being found for some reason.I will post my usercomparator class and JSP page.
<%@page import="tickets.UserComparator"%>
<%@page import="tickets.User"%>
<%@page import="tickets.ReporterTTComparator"%>
<%@page import="tickets.StatusTTComparator"%>
<%@page import="tickets.SystemTTComparator"%>
<%@page import="java.util.Collections"%>
<%@page import="java.util.ArrayList"%>
<%@page import="tickets.TroubleTicket"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
[code]....
The initial output of the texfile is this. NO ARRAYLIST OR COMPARATOR IS ALLOWED:
Steve Jobs 9 f 91
Bill Gates 6 m 90
James Gosling 3 m 100
James Gosling 3 f 100
Dennis Ritchie 5 m 94
Steve Jobs 9 m 95
Dennis Ritchie 5 f 100
Jeff Dean 7 m 100
Bill Gates 6 f 96
Jeff Dean 7 f 100
Sergey Brin 27 f 97
Sergey Brin 22 m 98
The collateExams method collates/sorts exam objects starting with the first 'm' (midterm) of the first object and immediately followed by the same person's 'f'(final). Only a SINGLE loop construct is allowed. The output from collateExams() should be the one below but my code is not working, i.e. collateExams method is not working. The output from collateExams() should be
Bill Gates 6 m 90
Bill Gates 6 f 96
James Gosling 3 m 100
James Gosling 3 f 100
Dennis Ritchie 5 m 94
Dennis Ritchie 5 f 100
Steve Jobs 9 m 95
Steve Jobs 9 f 91
Jeff Dean 7 m 100
Jeff Dean 7 f 100
Sergey Brin 22 m 98
Sergey Brin 27 f 97
I am getting [b]NullExceptions[/b] at
r[2*position[exams[i].getID()]+1] =
new Exam(r[i].getFirstName(), r[i].getLastName(),
r[i].getID(), r[i].getExamType(), r[i].getScore());
import java.io.*;
import java.util.*;
[Code] ....
Below code gets printed as output?
public interface I1 {
public void method();
}
public interface I2 {
public void method();
}
public interface I3 extends I2, I1 {
[Code] ....
how the Java-compiler manages the lifetime of objects. Aren't the variables a, b and, therefore, the objects A(i),B(i) destroyed after each iteration of the loop? Why then does the toString-method print out A(4), B(4) after finishing the for-loop?
Code:
public class mainClass {
public static void main(String[] args) {
C a = new A(0);
C b = new B(0);
for(int i=0;i<5;i++){
a = new A(i);
b = new B(i);
}
System.out.println(a+" "+b);
}
}