Чтобы упростить то, что я делаю, давайте воспользуемся примером из learnfromexamples.com, чтобы изменить несколько бит.используйте 'Collections.frequency', чтобы получить количество экземпляров с одним значением
package test;
import java.util.StringTokenizer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class Employee {
private String empno;
private String empName;
public Employee(String empno, String empName) {
this.empno = empno;
this.empName = empName;
}
public String getEmpno() {
return empno;
}
public void setEmpno(String empno) {
this.empno = empno;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
@Override
public String toString() {
return "Empno is "+ empno + " Empname is " + empName;
}
public Employee() {
// TODO Auto-generated constructor stub
}
@Override
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
boolean flag = false;
Employee employee = (Employee) arg0;
if(null!= employee && employee.getEmpName().equalsIgnoreCase(empName) && employee.getEmpno().equalsIgnoreCase(empno)){
flag = true;
}
return flag;
}
}
public class Test {
public static void main(String[] args) {
List<Employee> empList = new ArrayList<Employee>();
empList.add(new Employee("001", "Shidhar"));
empList.add(new Employee("002", "Pathy"));
empList.add(new Employee("003", "Sahana"));
empList.add(new Employee("003", "Sahana"));
empList.add(new Employee("004", "Sahana"));
empList.add(new Employee("003", "Sahana"));
//Get the occurrence of "new Employee("003", "Sahana")" from empLists
//int sahanaCount = Collections.frequency(empList, new Employee("003"));
//System.out.println("Count of sahana is : " +sahanaCount);
Set<Employee> uniqueId = new HashSet<Employee>(empList);
for (Employee emId : uniqueId) {
System.out.println("The emp with id "+emId.getEmpno()+" was repeated: "
+ Collections.frequency(empList, emId.getEmpName()));
}
}
}
Можно ли использовать Collections.frequency
найти частоту с учетом одной переменной, например, Collections.frequency(empList,"Sahana");
, который дает 4.
Другой вариант - я могу использовать HashMap для хранения счета, но скажем, что меня впечатлил Collections.frequency
и попытайтесь его использовать.
Спасибо за ваше предложение, но, скажем, я извлекаю 'equals' метода. Является ли это возможным? – bensw
@ bensw, вы можете переопределить сравнение «равно» по имени (игнорируя empno). Но это может вызвать проблемы в каком-то другом коде, поэтому я бы не рекомендовал это как общее решение. –
Я пробовал это, но, к сожалению, он выводил все 0s, которые не совсем понравились тем, что я ожидал. Другими словами, это ничего не считало. Вы знаете, что могло пойти не так? – bensw