在arraylist中查找重复的值
我有一个ArrayList<Car>
例如
class Car{ String carName; int carType; }
现在,我必须find名单中是否有任何车名相同。 什么是最好的方法来做到这一点?
创build一个比较器:
public 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
你将有所有的重复。
如果你有
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; }
找出汽车天气列表有重名的汽车。
尝试这个:
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()); } }
注意:这会给你重复的车名。 接下来将从列表中提取所有具有这些名称的汽车(如果您需要Car对象)
覆盖Car
类中的equals()
和hashCode()
方法,并使用Set
实现(如HashSet
而不是ArrayList
。
我做了一个类似的程序,向您展示了在ArrayList中重复的单词(它也显示了数组列表的内容和较大的string)
哦,顺便说一下,variables,和其他东西,如评论是西class牙语,因为我说西class牙语:/但是,如果你看到的代码,你可以看到,我解决了这个问题2个!
public void mostrarDiecisiete() { ArrayList<String> array = new ArrayList<String>(); ArrayList<String> array2 = new ArrayList<String>(); Scanner sc = new Scanner(System.in); String sss = ""; System.out.println(""); while (!sss.equalsIgnoreCase("fin")) { System.out.print("Ingrese un string: "); sss = sc.nextLine(); if (!sss.equalsIgnoreCase("fin")) { array.add(sss); } } int mayor = 0; Iterator it = array.iterator(); String s = ""; boolean repetir = true; int j = 0; for (int i = 0; i < array.size(); i++) { System.out.println(""); System.out.print("Posicion: " + i + " del array: " + array.get(i) + " " + "\n"); if (array.get(i).length() > mayor) { mayor = array.get(i).length(); s = array.get(i); } } for (int i = 0; i < array.size(); i++) { System.out.println("vuelta nro: " + i + " del primer for"); if(j==array.size()){ j=0;//inicializa de nuevo j en cero si j alcanzo el tamaño del array j=i;//inicializa j en el numero de vuelta del primer for, para luego sumarle uno mas asi siempre compara con el siguiente } for (j++; j < array.size(); j++) {//empieza a comparar con uno mas adelante siempre if (array.get(i).equalsIgnoreCase(array.get(j))) {//si el array de la posicion i se repite entre la 1 y la ultima de la pos j System.out.println("el string " + array.get(i) + " se repite en la posicion " + j); array2.add(array.get(i)); // se agrega a array2 } else { System.out.println("String: " + array.get(i) + " no se repite con la posicion " + j); } } } System.out.println(""); System.out.print( "el array es: " + array); System.out.println( ""); System.out.println( "El array mas largo es: " + s + " y tiene " + mayor + " caracteres"); System.out.println( ""); System.out.println( "Los Strings repetidos son" + array2); } }
这是我的输出:
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)