我在ArrayList中有10行员工详细信息(如员工技能,预期薪水,工作时间)。现在,当用户从前端输入员工详细信息时,所有行都应根据与输入的完全匹配进行排名。
我尝试过使用Comparator,但它用于比较内存中的两个对象..但我想将内存中的所有对象与用户输入进行比较。
我很久以前就被困在这里。很想在这里建议如何解决这个问题?我是java的新手。
这就是我所做的。这段代码的后半部分充满了错误而且不完整,因为我找不到正确的逻辑。
import java.util.*;
import java.lang.*;
import java.io.*;
public class rank {
int hours,price;
String skills,domain,location;
public rank ( int hours, int price, String skills, String domain, String location)
{
this.hours= hours;
this.price=price;
this.skills= skills;
this.domain= domain;
this.location= location;
}
public String toString()
{
return this.hours + " " + this.price+
" " + this.skills + " " + this.domain + " " + this.location;
}
public static void main(String[] args)
{
ArrayList<rank> ar = new ArrayList<rank>();
ar.add(new rank(20,30,"java,oracle","fin","hyd"));
ar.add(new rank(30,40,"oracle","fin","hyd"));
ar.add(new rank(10,40,"oracle","fin","hyd"));
ar.add(new rank(50,40,"java","fin","chn"));
System.out.println("unsorted");
for (int i=0;i<ar.size();i++)
System.out.println(ar.get(i));
Scanner input = new Scanner(System.in);
int hours1 = input.nextInt();
int price1= input.nextInt();
String skills1= input.nextLine();
String domain1= input.nextLine();
String location1=input.nextLine();
for (int j=0;j<ar.size();j++)
{
if (input == (ar.rank))
}
/*System.out.println("sorted");
Collections.sort(ar, new rankbyhours());
for (int i=0;i<ar.size();i++)
System.out.println(ar.get(i));
*/
}
}
/*class rankbyhours implements Comparator
{
public int compare(Object o1, Object o2)
{
rank r1 = (rank)o1;
input i1 = (input)o2;
}
}
*/
您可以覆盖排名类中的比较函数。
// Overriding the compare method to sort
public int compare(rank r1, rank r2) {
return r1.price - r2.price;
}
从比较器函数,您需要返回一个整数。对于升序或降序,该整数可以是正数或负数,对于相等,该整数可以是0。您需要提出订购排名对象的逻辑。