Ich habe eine ArrayList<String>
und ich möchte wiederholte Zeichenfolgen daraus entfernen. Wie kann ich das tun?
Antworten
Zu viele Anzeigen?Wenn Sie Duplikate aus ArrayList entfernen möchten, finden Sie die folgende Logik,
public static Object[] removeDuplicate(Object[] inputArray)
{
long startTime = System.nanoTime();
int totalSize = inputArray.length;
Object[] resultArray = new Object[totalSize];
int newSize = 0;
for(int i=0; i<totalSize; i++)
{
Object value = inputArray[i];
if(value == null)
{
continue;
}
for(int j=i+1; j<totalSize; j++)
{
if(value.equals(inputArray[j]))
{
inputArray[j] = null;
}
}
resultArray[newSize++] = value;
}
long endTime = System.nanoTime()-startTime;
System.out.println("Total Time-B:"+endTime);
return resultArray;
}
ArrayList<String> list = new ArrayList<String>();
HashSet<String> unique = new LinkedHashSet<String>();
HashSet<String> dup = new LinkedHashSet<String>();
boolean b = false;
list.add("Hello");
list.add("Hello");
list.add("how");
list.add("are");
list.add("u");
list.add("u");
for(Iterator iterator= list.iterator();iterator.hasNext();)
{
String value = (String)iterator.next();
System.out.println(value);
if(b==unique.add(value))
dup.add(value);
else
unique.add(value);
}
System.out.println(unique);
System.out.println(dup);
In Java erlaubt List einen geordneten Zugriff auf ihre Elemente. Sie können Duplikate haben, da ihr Suchschlüssel die Position und nicht ein Hash-Code ist, jedes Element kann geändert werden, während es in der Liste verbleibt, während Set eine Sammlung eindeutiger Elemente darstellt, und während sich Elemente im Set befinden, dürfen sie nicht geändert werden, während es keine Einschränkung gibt, die Sie daran hindert, Elemente in einem Set zu ändern.
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("A");
l.add("B");
l.add("C");
l.add("A");
System.out.println("Before removing duplicates: ");
for (String s : l) {
System.out.println(s);
}
Set<String> set = new HashSet<String>(l);
List<String> newlist = new ArrayList<String>(set);
System.out.println("after removing duplicates: ");
for (String s : newlist) {
System.out.println(s);
}
}
als Referenz, siehe diesen Link Wie entfernt man Duplikate aus ArrayList
- See previous answers
- Weitere Antworten anzeigen