Question

In: Computer Science

WRITE MODULES TO SORT BY 2 FIELD THEN 3 FIELD, THEN 4 FIELD use data structure...




WRITE MODULES TO SORT BY 2 FIELD THEN 3 FIELD, THEN 4 FIELD use data structure to guide you. please i need help. im so glad if anyone help me. thank you a lot and be safe

// Use a custom comparator.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

class Emprec {
String name;
String address;
double hours;
double rate;
int dependents;
char gender;
boolean degree;

// This is the classes's constructor !!!!

Emprec(String name, String address, String hours,String dependents) {

try {
this.name = name;
this.address = address;
this.hours = Double.valueOf(hours).doubleValue();
this.dependents = Integer.parseInt(dependents);
} catch (NumberFormatException errmsg) {
System.out.println("Invalid format" + errmsg);

this.name = "";
this.hours = 0.0;

}// catch

}// Emprec constructor !!!!

double calc_fed_tax(double hours, double rate) {

double yearly_income;

yearly_income = hours * rate * 52;

if (yearly_income < 30000.00)
return (hours * rate * .28);

else if (yearly_income < 50000.00)
return (hours * rate * .32);

else
return (hours * rate * .38);

}// calc_fed_tax

double calc_state_tax(double hours, double rate) {

double state_tax;

state_tax = hours * rate * .0561;

return (state_tax);

}// calc_state_tax

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public String getAddress() {
return address;
}

public double getHours() {
return hours;
}

public int getDependents() {
return dependents;
}
   
    public double getRate(){
        return rate;
    }
   
    public char getGender(){
        return gender;
    }

public String toString() {

return ("\n Name:    " + name +
"\n Address: " + address +
"\n Hours:   " + hours+
"\n Dependents " + dependents);

}// toString
}// Emprec

public class CompDemo3Sorts_Improved {
public static void main(String args[]) throws IOException {
// Create a tree set
BufferedReader inData = new BufferedReader(new InputStreamReader(
System.in));

// create strings for the input data for the Emprec object
String str_name;
String str_address;
String str_hours;
String str_dependents;

TreeSet<Emprec> ts = new TreeSet<Emprec>(new MyCompHours());// eclipse ask for casting
for (;;) {
System.out.print(" name:    ");
str_name = inData.readLine();

if (str_name.equalsIgnoreCase("exit")) break;

System.out.print(" Address: ");
str_address = inData.readLine();

System.out.print(" Hours:   ");
str_hours = inData.readLine();

System.out.print(" Dependents:   ");
str_dependents = inData.readLine();

Emprec employee = new Emprec(str_name, str_address, str_hours,str_dependents);

ts.add(employee);
}// for

// Get an iterator
Iterator<Emprec> i = ts.iterator();

// Display elements
while (i.hasNext()) {
Object element = i.next();
System.out.print(element + "\n");// calls the toString()
}//while
System.out.println();
}
}

class MyCompName implements Comparator<Object> { // eclipse ask for casting object
public int compare(Object emp1, Object emp2) {

String emp1Name = ((Emprec) emp1).getName();

String emp2Name = ((Emprec) emp2).getName();

return ((emp2Name.compareTo(emp1Name) <= 0) ? -1 : +1);

}
}


class MyCompHours implements Comparator<Object> { // eclipse ask for casting object
public int compare(Object emp1, Object emp2) {

double emp1Hours = ((Emprec) emp1).getHours();

double emp2Hours = ((Emprec) emp2).getHours();


return (emp1Hours <= emp2Hours)? -1:+1;
}
}


class MyCompAddress implements Comparator<Object> { // eclipse ask for casting object
public int compare(Object emp1, Object emp2) {

String emp1Address = ((Emprec) emp1).getAddress();

String emp2Address = ((Emprec) emp2).getAddress();


return ((emp2Address.compareTo(emp1Address) <= 0) ? -1 : +1);

}
}


class MyCompRate implements Comparator<Object>{
    public int compare(Object emp1, Object emp2){
        double emp1Rate = ((Emprec) emp1).getRate();
        double emp2Rate = ((Emprec) emp2).getRate();

        return ((emp1Rate <= emp2Rate) ? -1 : +1);
    }
}


class MyCompDependents implements Comparator<Object>{
    public int compare(Object emp1, Object emp2){
        int emp1Dependents = ((Emprec) emp1).getDependents();
        int emp2Dependents = ((Emprec) emp2).getDependents();

        return ((emp1Dependents <= emp2Dependents) ? -1 : +1);
    }
}


class MyCompGender implements Comparator<Object>{
    public int compare(Object emp1, Object emp2){
        char emp1Gender = ((Emprec) emp1).getGender();
        char emp2Gender = ((Emprec) emp2).getGender();

        return ((emp1Gender <= emp2Gender) ? -1 : +1);
    }
}

WRITE MODULES TO SORT BY 2 FIELD THEN 3 FIELD, THEN 4 FIELD use data structure to guide you. please i need help. im so glad if anyone help me. thank you a lot and be safe



Solutions

Expert Solution

I am using java 8 .. it will work .. please refer my code for multiple sorting.....

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

public class CompDemo {
   public static void main(String[] args) throws IOException {

       // Create a tree set
       BufferedReader inData = new BufferedReader(new InputStreamReader(
               System.in));

       // create strings for the input data for the Emprec object
       String str_name;
       String str_address;
       String str_hours;
       String str_dependents;

       ArrayList<Emprec> list = new ArrayList<Emprec>();// eclipse ask for casting
       for (;;) {
           System.out.print(" name: ");
           str_name = inData.readLine();

           if (str_name.equalsIgnoreCase("exit")) break;

           System.out.print(" Address: ");
           str_address = inData.readLine();

           System.out.print(" Hours: ");
           str_hours = inData.readLine();

           System.out.print(" Dependents: ");
           str_dependents = inData.readLine();

           Emprec employee = new Emprec(str_name, str_address, str_hours,str_dependents);

           list.add(employee);
       }          
       //name comparator
       Comparator<Emprec> compareByName = Comparator.comparing( Emprec::getName );
       //Address comparator
       Comparator<Emprec> compareByAddress = Comparator.comparing( Emprec::getAddress );
       //hours comparator
       Comparator<Emprec> compareByhours = Comparator.comparing( Emprec::getHours );
       //Dependent comparator
       Comparator<Emprec> compareByDependent = Comparator.comparing( Emprec::getDependents );

       //Compare by first name and then last name (multiple fields)
       Comparator<Emprec> compareByFullName = compareByName.thenComparing(compareByAddress)
               .thenComparing(compareByhours).thenComparing(compareByDependent);
       //Using Comparator - pseudo code
       List<Emprec> sortedEmployees = list.stream()
               .sorted(compareByFullName)
               .collect(Collectors.toList());

       // Get an iterator
       Iterator<Emprec> i = sortedEmployees.iterator();

       // Display elements
       while (i.hasNext()) {
           Object element = i.next();
           System.out.print(element + "\t");// calls the toString()
       }//while
       System.out.println();


   }

}

output :

name: Arjun
Address: Hys
Hours: 12
Dependents: 3
name: Arun
Address: Gan
Hours: 42
Dependents: 13
name: Rajesh
Address: Sec
Hours: 76
Dependents: 45
name: Ganesh
Address: Bangalore
Hours: 23
Dependents: 23
name: exit

Name: Arjun
Address: Hys
Hours: 12.0
Dependents 3  
Name: Arun
Address: Gan
Hours: 42.0
Dependents 13  
Name: Ganesh
Address: Bangalore
Hours: 23.0
Dependents 23  
Name: Rajesh
Address: Sec
Hours: 76.0
Dependents 45  


Related Solutions

write modules to sort by 2 field then 3 fields then 4 fields Use the data...
write modules to sort by 2 field then 3 fields then 4 fields Use the data Structure to guide you. //HW sort by 5 of these fields and ask the user which field to sort by !!! // Use a custom comparator. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Emprec { String name; String address; double hours; double rate; int dependents; char gender; boolean degree; // This is the classes's constructor !!!! Emprec(String name, String address, String hours,String...
Data Structure and Algorithm: 1. You are asked to use insertion sort to sort a singly...
Data Structure and Algorithm: 1. You are asked to use insertion sort to sort a singly linked list in ascending order. Why is this a bad idea? How does insertion sort’s runtime complexity change if you were to use it to sort a linked list? 2. Your classmate thinks that input arrays to the merge operation of merge sort don’t need to be in sorted order. Is your classmate right or wrong? Why?
A 2-3-4 tree can be used as a sorting machine. Write a sort() method that has...
A 2-3-4 tree can be used as a sorting machine. Write a sort() method that has passed an array of key values from main() and writes them back to the array in sorted order.
Given the following data, illustrate Selection Sort. index 1 2 3 4 5 6 data 11...
Given the following data, illustrate Selection Sort. index 1 2 3 4 5 6 data 11 10 21 3 7 5
USE JAVA. Write a very general sort method that can sort any type of data arrays/lists....
USE JAVA. Write a very general sort method that can sort any type of data arrays/lists. For example, can sort a list of integers in ascending order, a list of integers in descending order, a list of doubles, a list of student objects (with names and scores) in ascending order of names, or in descending order of scores, … You can use any pre-defined sort function or can code your own. Use your favorite language for implementation. If your language...
out of the following four: 1.Bubble sort 2. Insertion sort 3. Quicksort 4. Mergesort a. Which...
out of the following four: 1.Bubble sort 2. Insertion sort 3. Quicksort 4. Mergesort a. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is random? b. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is 90% sorted? c. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is reverse sorted? d. Which sorting methods perform best and...
out of the following four: 1.Bubble sort 2. Insertion sort 3. Quicksort 4. Mergesort a. Which...
out of the following four: 1.Bubble sort 2. Insertion sort 3. Quicksort 4. Mergesort a. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is random? b. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is 90% sorted? c. Which sorting methods perform best and worst for data sizes ≥ 25,000 when the input data is reverse sorted? d. Which sorting methods perform best and...
Data Structure: 1. Write a program for f(n) = 1^2+2^3+…+n^2. (i^2 = i*i) 2. If you...
Data Structure: 1. Write a program for f(n) = 1^2+2^3+…+n^2. (i^2 = i*i) 2. If you have the following polynomial function f(n)=a0 +a1 x + a2x2+…+an xn , then you are asked to write a program for that, how do you do? 3. Write a function in C++ to sort array A[]. (You can assume that you have 10 elements in the array.) 4. Analyze the following program, tell us what does it do for each location of “???” (...
Write a program, using any language you want, to sort the following using QuickSort: {3, 4,...
Write a program, using any language you want, to sort the following using QuickSort: {3, 4, 5,1, 2, 6, 7, 8}
4) Write a brief reflection of Task 2 and 3 which may include description on data...
4) Write a brief reflection of Task 2 and 3 which may include description on data type used to solve the given task, variable used, and objects created. Reflection should also include justification on logic used to solve the given task along with proper references
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT