を持っています ArrayList<Car>
例えば
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
にすべての重複があります。
あなたが持っている場合
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で繰り返される単語を表示する同様のプログラムを実行しました(また、arraylistのコンテンツとより大きな文字列を表示します)
ああ、ところで、変数やコメントのようなものはスペイン語です。スペイン語を話せるからです。
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)