我有一个ArrayList<Car>
查找重复值的ArrayList
对于实例
class Car{
String carName;
int carType;
}
现在,我已经找到,如果列表中具有相同名称的任何汽车。做这个的最好方式是什么?
我有一个ArrayList<Car>
查找重复值的ArrayList
对于实例
class Car{
String carName;
int carType;
}
现在,我已经找到,如果列表中具有相同名称的任何汽车。做这个的最好方式是什么?
创建一个比较:
public class CarComparator implements Comparator<Car>
{
public int compare(Car c1, Car c2)
{
return c1.carName.compareTo(c2.carName);
}
}
现在ArrayList
的所有的汽车添加到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);
}
}
最后,在你的duplicates
你将拥有所有的副本。
覆盖equals()
和hashCode()
方法在Car
类,并使用一个Set
实现诸如HashSet
,而不是ArrayList
。
我不能碰车object..I Car对象的只是ArrayList中,我已经找到,如果列表中的任何汽车都有相同的名称。 ..... – Makky
试试这个:
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());
}
}
注:这会给你是重复的车名。一个后续的会从列表中的那些名称中提取出所有的汽车(如果你需要一辆新车对象)
请参阅上述示例....无论如何感谢 – Makky
此解决方案比最佳投票解决方案更好。这是具有o(n)空间的o(n)算法,但是另一种解决方案是o(nlogn) –
如果你有
class Car{
String carName;
int carType;
}
和
List<Car> list;
包含汽车列表
,那么你可以像
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;
}
的方法,以找出是否名单汽车有名字重复的汽车。
我做了一个类似的计划,显示你的话是其中一个ArrayList重复(也它显示ArrayList的内容和较大的字符串)
哦,顺便说一句,变量和其他东西一样评论在西班牙语中,因为我说西班牙语:/但是,如果你看到代码,你可以看到我解决了2个问题的问题!
这是我的输出:
Ingrese un string: vaca
Ingrese un string: perro
Ingrese un string: dinosaurio
Ingrese un string: gato
Ingrese un string: cebra
Ingrese un string: DiNoSauRiO
Ingrese un string: VACA
Ingrese un string: hamster
Ingrese un string: gato
Ingrese un string: canario
Ingrese un string: elefante
Ingrese un string: tortuga
Ingrese un string: fin
Posicion: 0 del array: vaca
Posicion: 1 del array: perro
Posicion: 2 del array: dinosaurio
Posicion: 3 del array: gato
Posicion: 4 del array: cebra
Posicion: 5 del array: DiNoSauRiO
Posicion: 6 del array: VACA
Posicion: 7 del array: hamster
Posicion: 8 del array: gato
Posicion: 9 del array: canario
Posicion: 10 del array: elefante
Posicion: 11 del array: tortuga
vuelta nro: 0 del primer for
String: vaca no se repite con la posicion 1
String: vaca no se repite con la posicion 2
String: vaca no se repite con la posicion 3
String: vaca no se repite con la posicion 4
String: vaca no se repite con la posicion 5
el string vaca se repite en la posicion 6
String: vaca no se repite con la posicion 7
String: vaca no se repite con la posicion 8
String: vaca no se repite con la posicion 9
String: vaca no se repite con la posicion 10
String: vaca no se repite con la posicion 11
vuelta nro: 1 del primer for
String: perro no se repite con la posicion 2
String: perro no se repite con la posicion 3
String: perro no se repite con la posicion 4
String: perro no se repite con la posicion 5
String: perro no se repite con la posicion 6
String: perro no se repite con la posicion 7
String: perro no se repite con la posicion 8
String: perro no se repite con la posicion 9
String: perro no se repite con la posicion 10
String: perro no se repite con la posicion 11
vuelta nro: 2 del primer for
String: dinosaurio no se repite con la posicion 3
String: dinosaurio no se repite con la posicion 4
el string dinosaurio se repite en la posicion 5
String: dinosaurio no se repite con la posicion 6
String: dinosaurio no se repite con la posicion 7
String: dinosaurio no se repite con la posicion 8
String: dinosaurio no se repite con la posicion 9
String: dinosaurio no se repite con la posicion 10
String: dinosaurio no se repite con la posicion 11
vuelta nro: 3 del primer for
String: gato no se repite con la posicion 4
String: gato no se repite con la posicion 5
String: gato no se repite con la posicion 6
String: gato no se repite con la posicion 7
el string gato se repite en la posicion 8
String: gato no se repite con la posicion 9
String: gato no se repite con la posicion 10
String: gato no se repite con la posicion 11
vuelta nro: 4 del primer for
String: cebra no se repite con la posicion 5
String: cebra no se repite con la posicion 6
String: cebra no se repite con la posicion 7
String: cebra no se repite con la posicion 8
String: cebra no se repite con la posicion 9
String: cebra no se repite con la posicion 10
String: cebra no se repite con la posicion 11
vuelta nro: 5 del primer for
String: DiNoSauRiO no se repite con la posicion 6
String: DiNoSauRiO no se repite con la posicion 7
String: DiNoSauRiO no se repite con la posicion 8
String: DiNoSauRiO no se repite con la posicion 9
String: DiNoSauRiO no se repite con la posicion 10
String: DiNoSauRiO no se repite con la posicion 11
vuelta nro: 6 del primer for
String: VACA no se repite con la posicion 7
String: VACA no se repite con la posicion 8
String: VACA no se repite con la posicion 9
String: VACA no se repite con la posicion 10
String: VACA no se repite con la posicion 11
vuelta nro: 7 del primer for
String: hamster no se repite con la posicion 8
String: hamster no se repite con la posicion 9
String: hamster no se repite con la posicion 10
String: hamster no se repite con la posicion 11
vuelta nro: 8 del primer for
String: gato no se repite con la posicion 9
String: gato no se repite con la posicion 10
String: gato no se repite con la posicion 11
vuelta nro: 9 del primer for
String: canario no se repite con la posicion 10
String: canario no se repite con la posicion 11
vuelta nro: 10 del primer for
String: elefante no se repite con la posicion 11
vuelta nro: 11 del primer for
el array es: [vaca, perro, dinosaurio, gato, cebra, DiNoSauRiO, VACA, hamster, gato, canario, elefante, tortuga]
El array mas largo es: dinosaurio y tiene 10 caracteres
Los Strings repetidos son[vaca, dinosaurio, gato]
BUILD SUCCESSFUL (total time: 2 minutes 48 seconds)
为什么不使用'HashSet'。它为所有操作提供o(1),而您选择的'TreeSet'为o(logn)。我错了吗? –
使用Java 8: ' 设置 duplication =集合。newHashSet();如果(car.equals(car2)){ duplication.add(car2); }如果(car.equals(car2)){ }(car1,car2,car3).sorted([comparator] return car2; }); System.out.println(duplication); ' –
chaiyachaiya