我有ArrayList一些POJO.让我们说员工.
然后我得到另一个ArrayList只包含'id'的那个POJO.(即员工)
现在,我想从主列表中找到匹配ID的子列表.
我可以通过迭代主列表并将其与另一个列表的每个id进行比较来实现此目的.
但是,我想找出其他最佳解决方案.
任何指针将不胜感激.
编辑:
O(n*log n) O(n)运行时间 O(n) 总运行时间:O(n*log n)
这是整个过程:
初始化Employee ArrayList:
ArrayList<Employee> empArray = new ArrayList<Employee>();
Run Code Online (Sandbox Code Playgroud)
创建一些随机的Employees来测试:
Employee empTemp = new Employee();
empTemp.setId("1");
empTemp.setName("emp1");
empArray.add(empTemp);
empTemp = new Employee();
empTemp.setId("2");
empTemp.setName("emp2");
empArray.add(empTemp);
empTemp = new Employee();
empTemp.setId("1");
empTemp.setName("emp3");
empArray.add(empTemp);
empTemp = new Employee();
empTemp.setId("4");
empTemp.setName("emp4");
empArray.add(empTemp);
empTemp = new Employee();
empTemp.setId("2");
empTemp.setName("emp5");
empArray.add(empTemp);
Run Code Online (Sandbox Code Playgroud)
将Employees ArrayList与其ID进行排序.
Collections.sort(empArray, new Comparator<Object>() {
public int compare(Object obj0, Object obj1) {
// TODO Auto-generated method stub
Employee one = (Employee) obj0;
Employee two = (Employee) obj1;
return one.getId().compareTo(two.getId());
}
});
Run Code Online (Sandbox Code Playgroud)
初始化String的临时ArrayList,其中只包含Employees的ID:
ArrayList<String> idOnly = new ArrayList<String>();
idOnly.add("1");
idOnly.add("3");
Run Code Online (Sandbox Code Playgroud)
在这里,我们创建一个新的Employee对象,并为其分配我们想要创建子列表的id:
empTemp = new Employee();
empTemp.setId(idOnly.get(1));
Run Code Online (Sandbox Code Playgroud)
找到该ID的开始和结束索引:
int start = empArray.indexOf(empTemp);
int end = empArray.lastIndexOf(empTemp);
Run Code Online (Sandbox Code Playgroud)
从开始和结束索引创建子列表:
List<Employee> temp = null;
if (start != -1 && end != -1){
temp = empArray.subList(start, end+1);
}
Run Code Online (Sandbox Code Playgroud)
只有TWEAK是Override对equals(Object obj)在Employee类:
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Employee two = (Employee) obj;
return this.id.equals(two.getId());
}
Run Code Online (Sandbox Code Playgroud)
我知道它有点棘手,但需要n*log(n)运行时间.
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |