如何在java中使用hashmap删除重复的数组元素

时间:2012-10-19 10:14:55

标签: java


如何在不使用java中的hashset的情况下使用HashMap删除数组中的重复元素...

下面的代码描述了删除数组中的重复项。

现在我需要使用hashmap来编写密钥和值对     

import java.util.*;

class TestArray{

public static void main(String arg[])
{

ArrayList<String> wordDulicate = new ArrayList<String>();

    wordDulicate.add("chennai");
    wordDulicate.add("bangalore");
    wordDulicate.add("hyderabad");
    wordDulicate.add("delhi");
    wordDulicate.add("bangalore");
    wordDulicate.add("mumbai");
    wordDulicate.add("mumbai");
    wordDulicate.add("goa");
    wordDulicate.add("calcutta");
    wordDulicate.add("hyderabad");

    ArrayList<String> nonDupList = new ArrayList<String>();

    Iterator<String> dupIter = wordDulicate.iterator();
    while(dupIter.hasNext())
    {
    String dupWord = dupIter.next();
    if(nonDupList.contains(dupWord))
    {
        dupIter.remove();
    }else
    {
        nonDupList.add(dupWord);
    }
    }
  System.out.println(nonDupList);
}
  }

3 个答案:

答案 0 :(得分:3)

HashSet无论如何都是以HashMap实现的。如果您特别想使用HashMap,请使用与HashSet相同的方式:在任何地方使用虚拟常量new Object()作为地图值。

答案 1 :(得分:0)

HashMap会阻止您输入重复键,就像HashSet一样。实际上,许多HashSet实现只是在底层使用HashMap。

所以你可以这样做:

HashMap<String, String> map = new HashMap<String, String>();
for (String s : WordDuplicate) 
  map.put( s, s );

现在您可以像HashMap一样访问键/值。

答案 2 :(得分:0)

import java.util.HashSet;
import java.util.Stack;

public class stackdupes {

    public static void main(String[] args) {
        Stack<Integer> st = new Stack<Integer>();
        int[] arr= {1,2,3,3,4,5,5,7};
        HashSet<Integer> set = new HashSet<Integer>();

        for (int i=0;i<arr.length;i++) {
            if(set.add(arr[i]) == true)
            st.push(arr[i]);
        }
        System.out.println(st); 

    }   
}