-3

オブジェクト(id、name)を含む配列リストが1つあります。リスト内の名前が重複している場合は削除する必要があります

名前が繰り返される場合は、一度だけ名前を印刷する必要があります

4

6 に答える 6

3

リストにエントリを重複させたくない場合は、SET を使用します。

  1. シーケンスが不要な場合はHashSet
  2. 名前を順番に出力する必要がある場合はLinkedHashSet

:オブジェクト(ID、名前)のequalsとhashcodeをオーバーライドする必要があります。そうしないと、SETに重複したオブジェクトが見つかります

于 2012-12-18T07:32:55.347 に答える
0

適切なコンパレータを実装して、データ構造を設定します。ループを実行し、オブジェクトをそのセットに入れます。このセットを印刷します。

于 2012-12-18T07:29:21.033 に答える
0
public static boolean checkDuplicate(ArrayList list) {
 HashSet set = new HashSet();
 for (int i = 0; i < list.size(); i++) {
  boolean val = set.add(list.get(i));
  if (val == false) {
    return val;
  }
 }
 return true;
}
于 2012-12-18T07:25:38.420 に答える
0

Arraylist は、イテレータによって返された最後の要素をリスト自体から削除できるイテレータを提供します。そのため、すでに見た名前を追跡するだけです。Set実装は役に立ちます。

Set<String> names = new HashSet<>();
Iterator<MyType> it = getListFromSomewhere().iterator();  // you know how
while(it.hasNext()) {
   if (!names.add(it.next().getName()) {
     it.remove();
   }
}

ヒント: 値が既にセット内にある場合、セットに追加すると false が返されます。

備考

あなたの要件はそれほど明確ではありませんでした: ここでは、最初のエントリに名前を付けて保持し、それ以降のすべてエントリをリストから削除します。リストが ID でソートされていない場合、リストはかなりランダムになり、どのエントリが保持され、どのエントリが削除されます。

于 2012-12-18T07:32:33.443 に答える
0

java.util.Set代わりにaを使用してください。重複を含めることはできません。

参照: http://docs.oracle.com/javase/6/docs/api/java/util/Set.html

Set<String> myNames = new HashSet<String>();
myNames.add("JAMES");
myNames.add("ELLA");
myNames.add("JAMES");

myNames.size() // will return 2
于 2012-12-18T07:27:08.247 に答える
0

SetファミリーとListファミリーの助けを借りてそれを行うことができます

Setファミリを使用して重複を削除する方法を見てきました。リストファミリーの助けを借りてそれを行うこともできます. 以下のコードを参照してください。

package com.rais.util;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Rais.Alam
 * @project Utils
 * @date Dec 18, 2012
 */
public class ConverterUtil
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {

        List<String> original = new ArrayList<String>();

        original.add("Tomcat");
        original.add("Jboss");
        original.add("GlassFish");
        original.add("Weblogic");
        original.add("Tomcat");

        List<String> newList = removeDuplicates(original);

        for (String value : newList)
        {
            System.out.println(value);
        }

    }

    public static List<String> removeDuplicates(List<String> original)
    {

        List<String> tempList = new ArrayList<String>();

        for (String value : original)
        {
            if (!tempList.contains(value))
            {
                tempList.add(value);
            }
        }

        return tempList;

    }

}
于 2012-12-18T09:53:30.933 に答える