3

から重複を削除するにはArrayList?

Bean 配列から取得する配列があり、各配列変数にハイパーリンクを提供getCcnptags[java,php,c++,c,java,php]ていますが、ハイパーリンクを追加する前に重複を削除したいのですが、以下のコードにコードを追加して重複を削除することはできますか? .

for(int k=0;k<name.getCcnptags().size();k++)
    {

    String tag=name.getCcnptags().get(k);
        if(k!=name.getCcnptags().size()-1)
    {
    tag=tag+",";

    }
    %>
    <a href='#'><%=tag%></a>
}
4

4 に答える 4

4

HashSetを使用することをお勧めします。不可能な場合はHashSet、これに一時を使用できます。

ArrayList a= new ArrayList();
HashSet hs = new HashSet();
hs.addAll(a);  // willl not add the duplicate values
a.clear();
a.addAll(hs);  // copy the unique values again to arraylist
于 2013-07-13T05:47:46.470 に答える
3

Set interaceを使用して、重複する要素を含まないコレクションを使用します。

ArrayList作成して使用することからHashset

CollectionCollectionobject には、値を初期化するオブジェクトを受け入れるコンストラクターがあります。

ArrayList yourlist= new ArrayList();
HashSet nodupesSet= new HashSet(yourlist);

繰り返します nodupesSet

于 2013-07-13T05:49:15.523 に答える
0

補足として、リスト内のアイテムを元の順序のままにする必要がある場合は、代わりに次のアプローチを使用できます。このセットを使用して重複アイテムをチェックし、別のリストを返します。

public list<Object> removeDuplicates(List<Object> list)
{
    List<Object> secondary = new LinkedList<Object>();
    Set<Object> auxillery  = new HashSet<Object>();

    for (Object o : list)
    {
        if (!auxillery.contains(o))
        {
            auxillery.add(o);
            secondary.add(o);
        }
    }

    return secondary;
}

使用法は次のようなものです(または同様のもの):

public static final void main(String[] args)
{
    List<Integer> numbers = new LinkedList<Integer>();
    numbers.add(5); numbers.add(6); numbers.add(5); numbers.add(8);

    numbers = removeDuplicates(numbers);
}

覚えておくべきこと: カスタム クラスを使用する場合は、それらが標準Object.hashCode()メソッドをオーバーライドしていることを確認してください。そうしないと、このアプローチは適切に機能しません。

于 2013-07-13T17:14:29.320 に答える
0

これはウェブで見つけました。これは、Vector 内の要素を削除するのとよく似ていますが、メソッド名が変更されています。

import java.util.*;
class RemoveDuplicates
{

    public static void main(String args[])
    {
    ArrayList<String> v=new ArrayList<String>();
    v.add("Gowtham");
    v.add(" Gutha's");
    v.add(" Java");
    v.add("-");
    v.add("demos");
    v.add(".");
    v.add("blogspot");

    // '.' again!
    v.add(".");
    v.add("com ");

    // Gowtham again!
    v.add("gowtham");

    System.out.println("Original");

        for(int i=0;i<v.size();i++)
        {
            System.out.print(v.get(i));

        }

    System.out.println("\nAfter removing 

duplicates");
    removeDuplicates(v);

        for(int i=0;i<v.size();i++)
        {
            System.out.print(v.get(i));
        }

    }


    // Applicable for all types of ArrayLists

    public static void removeDuplicates(ArrayList 

v)
    {
        for(int i=0;i<v.size();i++)
        {
            for(int j=0;j<v.size();j++)
            {
                    if(i!=j)
                    {


if(v.get(i).equals(v.get(j)))
                        {
                        v.remove(j);
                        }
                    }
            }
        }
    }


    /*
        * Specifically applicable for String is 

written for equalIgnoreCase
        * The code..


        public static void 

removeDuplicates(ArrayList<String> v)
        {
            for(int i=0;i<v.size();i++)
            {
                for(int j=0;j<v.size();j++)
                {
                    if(i!=j)
                    {


if(v.get(i).equalsIgnoreCase(v.get(j)))
                        {
                        v.remove(j);
                        }
                    }
            }
        }
    */

}
于 2013-07-13T05:53:05.113 に答える