Task - Collections - Sorting Collections and Loose Coupling #50
Replies: 33 comments
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
import java.util.ArrayList; interface Client { } abstract class ServiceClient implements Client, Comparable { } class Customer extends ServiceClient { } class Business extends ServiceClient { } public class MyCompany { } |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
import java.util.ArrayList; |
Beta Was this translation helpful? Give feedback.
-
|
import java.text.ParseException; interface Client extends Comparable { } abstract class Clients implements Client { } class Customer extends Clients { } class Business extends Clients { } public class SortingCollections { } |
Beta Was this translation helpful? Give feedback.
-
|
`package collections; import java.text.ParseException; interface Client { } abstract class Service implements Client, Comparable { } class Customer extends Service { } class Business extends Service { } public class SortingChallenge { }` |
Beta Was this translation helpful? Give feedback.
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
class Clients implements Client, Comparable<Clients> {
protected int id;
protected String name;
protected String email;
protected double charges;
GregorianCalendar dateOfAgreement;
public Clients(int id, String name, String email, double charges) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = new GregorianCalendar();
}
public int getId() {
return id;
}
public GregorianCalendar getDateOfAgreement() {
return dateOfAgreement;
}
@Override
public int compareTo(Clients o) {
return this.id - o.getId();
}
@Override
public double getCharges() {
return this.charges;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
}
@Override
public void sendEmail(double payment) {
System.out.println("Email sent with pending payment :" + payment);
}
protected long findServicableDays(Date d1, Date d2) {
return (d1.getTime() - d2.getTime()) / (1000 * 3600 * 24);
}
}
class Customer extends Clients {
public Customer(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public String toString() {
return "Customer [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.getTime() + ", email=" + email
+ ", id="
+ id + ", name=" + name + "]";
}
}
class Business extends Clients {
private final double GST_RATE = 18;
public Business(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
double payment = findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
return payment + payment * .18;
}
public double getGst() {
return this.GST_RATE;
}
@Override
public String toString() {
return "Business [GST_RATE=" + GST_RATE + ", charges=" + charges + ", dateOfAgreement="
+ dateOfAgreement.getTime()
+ ", email=" + email + ", id=" + id + ", name=" + name + "]";
}
}
public class MyCompany {
public static void main(String[] args) {
Clients c1 = new Customer(101, "Gaurav", "xyz@email.com", 200);
Clients c2 = new Customer(103, "Rohit", "xyz@email.com", 300);
Clients b1 = new Business(102, "Google", "xyz@email.com", 2000);
Clients b2 = new Business(104, "Amazon", "xyz@email.com", 3000);
List<Clients> list = new ArrayList<>();
list.add(b1);
list.add(b2);
list.add(c1);
list.add(c2);
list.forEach(System.out::println);
List<Double> pendingPayments = new ArrayList<>();
list.forEach(ele -> pendingPayments.add(ele.calculatePayment(new GregorianCalendar(2022, 2, 31))));
pendingPayments.forEach(System.out::println);
for (int i = 0; i < list.size(); i++) {
list.get(i).sendEmail(pendingPayments.get(i));
}
Collections.sort(list);
list.forEach(System.out::println);
Collections.sort(list, (a, b) -> (int) (a.getCharges() - b.getCharges()));
list.forEach(System.out::println);
Collections.sort(list,
(a, b) -> (int) (a.dateOfAgreement.getTimeInMillis() - b.dateOfAgreement.getTimeInMillis()));
list.forEach(System.out::println);
}
} |
Beta Was this translation helpful? Give feedback.
-
import java.util.*;
public class D50 {
public static void main(String[] args) {
// task 1
ServiceClient c1 = new Customer1(3, "James", "jk@gmail.com", 1000, new GregorianCalendar(2022, 2, 7));
ServiceClient c2 = new Customer1(2, "Adam", "as@gmail.com", 1000, new GregorianCalendar(2022, 2, 8));
// task 2
ServiceClient c3 = new Business(1, "Marie", "er@gmail.com", 2000, new GregorianCalendar(2022, 2, 9));
ServiceClient c4 = new Business(5, "Nick", "nb@gmail.com", 2000, new GregorianCalendar(2022, 2, 10));
// task 3
List<ServiceClient> clients = new ArrayList<>();
clients.add(c1);
clients.add(c2);
clients.add(c3);
clients.add(c4);
// task 4
double[] pendingPayments = new double[4];
for (int i = 0; i < 4; i++) {
pendingPayments[i] = clients.get(i).calculatePayment(new GregorianCalendar(2022, 2, 30));
}
System.out.println(Arrays.toString(pendingPayments));
// task 5
for (int i = 0; i < 4; i++) {
clients.get(i).sendEmail(pendingPayments[i]);
}
System.out.println();
// task 6
System.out.println("Sort According to Id");
Collections.sort(clients);
clients.forEach(System.out::println);
System.out.println();
// task 7
System.out.println("Sort According to charges");
clients.sort((ServiceClient o1, ServiceClient o2) -> (int) (o2.getCharges() - o1.getCharges()));
clients.forEach(System.out::println);
System.out.println();
// task 8
System.out.println("Sort According to date of Agreement");
clients.sort((ServiceClient o1,
ServiceClient o2) -> (o1.dateOfAgreement.get(Calendar.DATE) - o2.dateOfAgreement.get(Calendar.DATE)));
clients.forEach(System.out::println);
}
}
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
abstract class ServiceClient implements Client, Comparable<ServiceClient> {
int id;
String name;
String email;
double charges;
GregorianCalendar dateOfAgreement;
public int compareTo(ServiceClient other) {
return this.id - other.id;
}
public double getCharges() {
return charges;
}
public double calculate(GregorianCalendar invoiceDate) {
int date = invoiceDate.get(Calendar.DATE);
int agreementDate = dateOfAgreement.get(Calendar.DATE);
return (date - agreementDate) * getCharges();
}
public void sendEmail(double payment) {
System.out.println("Pending Payment: " + payment);
}
}
class Customer1 extends ServiceClient {
public Customer1(int id, String name, String email, double charges, GregorianCalendar dateOfAgreement) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = dateOfAgreement;
}
@Override
public String toString() {
return "Customer [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.get(Calendar.DATE) + ", email="
+ email + ", id="
+ id + ", name=" + name + "]";
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return calculate(invoiceDate);
}
}
class Business extends ServiceClient {
double gstRate = 12;
public Business(int id, String name, String email, double charges, GregorianCalendar dateOfAgreement) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = dateOfAgreement;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return calculate(invoiceDate) * getGST();
}
double getGST() {
return gstRate;
}
@Override
public String toString() {
return "Business [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.get(Calendar.DATE) + ", email="
+ email
+ ", gstRate=" + gstRate + ", id=" + id + ", name=" + name + "]";
}
} |
Beta Was this translation helpful? Give feedback.
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
class Clients implements Client, Comparable<Clients> {
protected int id;
protected String name;
protected String email;
protected double charges;
GregorianCalendar dateOfAgreement;
public Clients(int id, String name, String email, double charges) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = new GregorianCalendar();
}
public int getId() {
return id;
}
public GregorianCalendar getDateOfAgreement() {
return dateOfAgreement;
}
@Override
public int compareTo(Clients o) {
return this.id - o.getId();
}
@Override
public double getCharges() {
return this.charges;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
}
@Override
public void sendEmail(double payment) {
System.out.println("Email sent with pending payment :" + payment);
}
protected long findServicableDays(Date d1, Date d2) {
return (d1.getTime() - d2.getTime()) / (1000 * 3600 * 24);
}
}
class Customer extends Clients {
public Customer(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public String toString() {
return "Customer [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.getTime() + ", email=" + email
+ ", id="
+ id + ", name=" + name + "]";
}
}
class Business extends Clients {
private final double GST_RATE = 18;
public Business(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
double payment = findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
return payment + payment * .18;
}
public double getGst() {
return this.GST_RATE;
}
@Override
public String toString() {
return "Business [GST_RATE=" + GST_RATE + ", charges=" + charges + ", dateOfAgreement="
+ dateOfAgreement.getTime()
+ ", email=" + email + ", id=" + id + ", name=" + name + "]";
}
}
public class MyCompany {
public static void main(String[] args) {
Clients c1 = new Customer(101, "Gaurav", "xyz@email.com", 200);
Clients c2 = new Customer(103, "Rohit", "xyz@email.com", 300);
Clients b1 = new Business(102, "Google", "xyz@email.com", 2000);
Clients b2 = new Business(104, "Amazon", "xyz@email.com", 3000);
List<Clients> list = new ArrayList<>();
list.add(b1);
list.add(b2);
list.add(c1);
list.add(c2);
list.forEach(System.out::println);
List<Double> pendingPayments = new ArrayList<>();
list.forEach(ele -> pendingPayments.add(ele.calculatePayment(new GregorianCalendar(2022, 2, 31))));
pendingPayments.forEach(System.out::println);
for (int i = 0; i < list.size(); i++) {
list.get(i).sendEmail(pendingPayments.get(i));
}
Collections.sort(list);
list.forEach(System.out::println);
Collections.sort(list, (a, b) -> (int) (a.getCharges() - b.getCharges()));
list.forEach(System.out::println);
Collections.sort(list,
(a, b) -> (int) (a.dateOfAgreement.getTimeInMillis() - b.dateOfAgreement.getTimeInMillis()));
list.forEach(System.out::println);
}
} |
Beta Was this translation helpful? Give feedback.
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
class Clients implements Client, Comparable<Clients> {
protected int id;
protected String name;
protected String email;
protected double charges;
GregorianCalendar dateOfAgreement;
public Clients(int id, String name, String email, double charges) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = new GregorianCalendar();
}
public int getId() {
return id;
}
public GregorianCalendar getDateOfAgreement() {
return dateOfAgreement;
}
@Override
public int compareTo(Clients o) {
return this.id - o.getId();
}
@Override
public double getCharges() {
return this.charges;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
}
@Override
public void sendEmail(double payment) {
System.out.println("Email sent with pending payment :" + payment);
}
protected long findServicableDays(Date d1, Date d2) {
return (d1.getTime() - d2.getTime()) / (1000 * 3600 * 24);
}
}
class Customer extends Clients {
public Customer(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public String toString() {
return "Customer [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.getTime() + ", email=" + email
+ ", id="
+ id + ", name=" + name + "]";
}
}
class Business extends Clients {
private final double GST_RATE = 18;
public Business(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
double payment = findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
return payment + payment * .18;
}
public double getGst() {
return this.GST_RATE;
}
@Override
public String toString() {
return "Business [GST_RATE=" + GST_RATE + ", charges=" + charges + ", dateOfAgreement="
+ dateOfAgreement.getTime()
+ ", email=" + email + ", id=" + id + ", name=" + name + "]";
}
}
public class d50 {
public static void main(String[] args) {
Clients c1 = new Customer(101, "Gaurav", "xyz@email.com", 200);
Clients c2 = new Customer(103, "Rohit", "xyz@email.com", 300);
Clients b1 = new Business(102, "Google", "xyz@email.com", 2000);
Clients b2 = new Business(104, "Amazon", "xyz@email.com", 3000);
List<Clients> list = new ArrayList<>();
list.add(b1);
list.add(b2);
list.add(c1);
list.add(c2);
list.forEach(System.out::println);
List<Double> pendingPayments = new ArrayList<>();
list.forEach(ele -> pendingPayments.add(ele.calculatePayment(new GregorianCalendar(2022, 2, 31))));
pendingPayments.forEach(System.out::println);
for (int i = 0; i < list.size(); i++) {
list.get(i).sendEmail(pendingPayments.get(i));
}
Collections.sort(list);
list.forEach(System.out::println);
Collections.sort(list, (a, b) -> (int) (a.getCharges() - b.getCharges()));
list.forEach(System.out::println);
Collections.sort(list,
(a, b) -> (int) (a.dateOfAgreement.getTimeInMillis() - b.dateOfAgreement.getTimeInMillis()));
list.forEach(System.out::println);
}
} |
Beta Was this translation helpful? Give feedback.
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
class Clients implements Client, Comparable<Clients> {
protected int id;
protected String name;
protected String email;
protected double charges;
GregorianCalendar dateOfAgreement;
public Clients(int id, String name, String email, double charges) {
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = new GregorianCalendar();
}
public int getId() {
return id;
}
public GregorianCalendar getDateOfAgreement() {
return dateOfAgreement;
}
@Override
public int compareTo(Clients o) {
return this.id - o.getId();
}
@Override
public double getCharges() {
return this.charges;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
}
@Override
public void sendEmail(double payment) {
System.out.println("Email sent with pending payment :" + payment);
}
protected long findServicableDays(Date d1, Date d2) {
return (d1.getTime() - d2.getTime()) / (1000 * 3600 * 24);
}
}
class Customer extends Clients {
public Customer(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public String toString() {
return "Customer [charges=" + charges + ", dateOfAgreement=" + dateOfAgreement.getTime() + ", email=" + email
+ ", id="
+ id + ", name=" + name + "]";
}
}
class Business extends Clients {
private final double GST_RATE = 18;
public Business(int id, String name, String email, double charges) {
super(id, name, email, charges);
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
double payment = findServicableDays(invoiceDate.getTime(), this.dateOfAgreement.getTime()) * charges;
return payment + payment * .21;
}
public double getGst() {
return this.GST_RATE;
}
@Override
public String toString() {
return "Business [GST_RATE=" + GST_RATE + ", charges=" + charges + ", dateOfAgreement="
+ dateOfAgreement.getTime()
+ ", email=" + email + ", id=" + id + ", name=" + name + "]";
}
}
public class MyCompany {
public static void main(String[] args) {
Clients c1 = new Customer(101, "Gaurav", "xyz@email.com", 200);
Clients c2 = new Customer(103, "Pankaj", "xyz@email.com", 300);
Clients b1 = new Business(102, "Facebook", "xyz@email.com", 2000);
Clients b2 = new Business(104, "Instagram", "xyz@email.com", 3000);
List<Clients> list = new ArrayList<>();
list.add(b1);
list.add(b2);
list.add(c1);
list.add(c2);
list.forEach(System.out::println);
List<Double> pendingPayments = new ArrayList<>();
list.forEach(ele -> pendingPayments.add(ele.calculatePayment(new GregorianCalendar(2019, 5, 15))));
pendingPayments.forEach(System.out::println);
for (int i = 0; i < list.size(); i++) {
list.get(i).sendEmail(pendingPayments.get(i));
}
Collections.sort(list);
list.forEach(System.out::println);
Collections.sort(list, (a, b) -> (int) (a.getCharges() - b.getCharges()));
list.forEach(System.out::println);
Collections.sort(list,
(a, b) -> (int) (a.dateOfAgreement.getTimeInMillis() - b.dateOfAgreement.getTimeInMillis()));
list.forEach(System.out::println);
}
} |
Beta Was this translation helpful? Give feedback.
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
interface Client {
double getCharges();
double calculatePayment(GregorianCalendar invoiceDate);
void sendEmail(double payment);
}
abstract class ServiceClient implements Client, Comparable<ServiceClient> {
int id;
String name;
String email;
double charges;
GregorianCalendar dateOfAgreement;
public int compareTo (ServiceClient other) {
return this.id - other.id;
}
public double getCharges() {
return charges;
}
public double calculate(GregorianCalendar invoiceDate) {
int date = invoiceDate.get(Calendar.DATE);
int agreementDate = dateOfAgreement.get(Calendar.DATE);
return(date-agreementDate)*getCharges();
}
public void sendEmail(double payment) {
System.out.println("Pending Payment: " +payment);
}
}
class Customer extends ServiceClient {
public Customer(int id,String name,String email,double charges,GregorianCalendar dateOfAgreement){
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = dateOfAgreement;
}
@Override
public String toString() {
return "Customer [charges=" + charges +",dateOfAgreement" + dateOfAgreement.get(Calendar.DATE) + ",email="+ email +", id=" + id +",name=" + name +"]";
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate){
return calculate(invoiceDate);
}
}
class Business extends ServiceClient {
double gstRate = 12;
public Business(int id,String name,String email,double charges,GregorianCalendar dateOfAgreement){
this.id = id;
this.name = name;
this.email = email;
this.charges = charges;
this.dateOfAgreement = dateOfAgreement;
}
@Override
public double calculatePayment(GregorianCalendar invoiceDate) {
return calculate(invoiceDate) * getGST();
}
double getGST(){
return gstRate * calculate(new GregorianCalendar(2022,3,31))
}
@Override
public String toString() {
return "Business [gstRate=" + gstRate +", name=" + name +", email=" + email +", charges=" + charges +", dateOfAgreement=" +dateOfAgreement.get(Calendar.DATE) +"]";
}
}
public class MyCompany {
public static void main(String[] args) {
ServiceClient c1 = new Customer(10,"Kiran","k@gmail.com",1000, new GregorianCalendar(2022,3,8));
ServiceClient c2 = new Customer(5,"Kiya","ki@gmail.com",2000, new GregorianCalendar(2022,3,9));
ServiceClient c3 = new Customer(2,"Rohan","r@gmail.com",2000, new GregorianCalendar(2022,3,10));
ServiceClient c4 = new Customer(12,"Sag","s@gmail.com",3000, new GregorianCalendar(2022,3,11));
List<ServiceClient> clients = new ArrayList<>(Arrays.asList(c1, c2, c3, c4));
double[] pendingPayments = new double[4];
for (int i = 0; i < 4; i++) {
pendingPayments[i] = clients.get(i).calculatePayment(new GregorianCalendar(2022,3,30));
}
System.out.println(Arrays.toString(pendingPayments));
for(int i = 0; i<4; i++){
clients.get(i).sendEmail(pendingPayments[i]);
}
System.out.println("Sort According to Id");
Collections.sort(clients);
clients.forEach(System.out::println);
System.out.println("Sort According to charges");
clients.sort((ServiceClient o1, ServiceClient o2)-> (int) (o2.getCharges()-o1.getCharges()));
clients.forEach(System.out::println);
System.out.println("Sort According to date of Agreement");
clients.sort((ServiceClient o1, ServiceClient o2)-> (o1.dateOfAgreement.get(Calendar.DATE)-o2.dateOfAgreement.get(Calendar.DATE)));
clients.forEach(System.out::println);
}
} |
Beta Was this translation helpful? Give feedback.
-
|
@akash-coded |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Create an interface called Client which will have:
double getCharges()double calculatePayment(invoiceDate): calculates the receivable amount by multiplying charges with no. of serviceable daysvoid sendEmail(double payment): sends an email to the client with the pending amountCreate a class Customer which implements the interface Client and declares the following:
idnameemailchargesdateOfAgreementCreate a class Business which implements the interface Client and declares the following:
idnameemailchargesgstRatedateOfAgreementdouble getGST()In the driver class MyCompany :
pendingPayments. Display the array.pendingPaymentsarray to send emails to all the clientsid(natural order) in ascending order and print it.chargesin descending order and print itdateOfAgreementin ascending order and print itBeta Was this translation helpful? Give feedback.
All reactions