Mak*_*kky 10 java search arraylist duplicates
我有一个 ArrayList<Car>
例如
class Car{
String carName;
int carType;
}
Run Code Online (Sandbox Code Playgroud)
现在,我必须找到列表中是否有任何具有相同名称的汽车.做这个的最好方式是什么?
Swa*_*rma 25
创建一个比较器:
public class CarComparator implements Comparator<Car>
{
public int compare(Car c1, Car c2)
{
return c1.carName.compareTo(c2.carName);
}
}
Run Code Online (Sandbox Code Playgroud)
现在将所有车辆添加ArrayList
到a SortedSet
,最好TreeSet
; 如果有重复项添加到重复项列表:
List<Car> duplicates = new ArrayList<Car>();
Set<Car> carSet = new TreeSet<Car>(new CarComparator());
for(Car c : originalCarList)
{
if(!carSet.add(c))
{
duplicates.add(c);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,duplicates
你将获得所有重复项.
如果你有
class Car{
String carName;
int carType;
}
Run Code Online (Sandbox Code Playgroud)
和
List<Car> list;
Run Code Online (Sandbox Code Playgroud)
包含汽车列表,那么你可以有一个类似的方法
public static boolean hasDuplicates(List<Car> p_cars) {
final List<String> usedNames = new ArrayList<String>();
for (Car car : p_cars) {
final String name = car.carName;
if (usedNames.contains(name)) {
return true;
}
usedNames.add(name);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
找出汽车列表是否有重复名称的汽车.
试试这个:
List<Car> cars = getCars();
Set<String> names = new HashSet<String>();
for (Car car:cars) {
if (names.contains(car.getName()) {
duplicate(car); // some magic handler
} else {
names.add(car.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这将为您提供重复的汽车名称.接下来将从列表中提取具有这些名称的所有汽车(如果您需要Car对象)
归档时间: |
|
查看次数: |
66794 次 |
最近记录: |