2012-03-05 15 views
0

ベクトルにいくつかの名前を格納し、そのデータをハッシュテーブルに変換する必要があります。ハッシュテーブルエントリのIDはシリアル番号です。私がやったことは名前をベクトルに格納し、データをJavaのハッシュテーブルに変換する

import java.io.*; 
import java.util.*; 

class VecToHash{ 
public static void main(String [] args){ 
Vector<String> vec = new Vector<String>(); 

Hashtable names=new Hashtable(); 
vec.addElement(new String("name1")); 
vec.addElement(new String("name2")); 
vec.addElement(new String("name3")); 
vec.addElement(new String("name4")); 
vec.addElement(new String("name5")); 

int VecSize=vec.size(); 

for (int i=0;i<VecSize;i++){ 
for (int j=0;j<VecSize;j++){ 
names.put(("j"), new String(vec.elementAt(i))); 
    } 

Set set=names.keySet(); 
Iterator itr=set.iterator(); 

while (itr.hasNext()){ 
String str=(String) itr.next(); 
System.out.println(str+":"+names.get(str));} 
System.out.println(); 
}}} 

であるが、そのは、IDとしてシリアル番号を取っていないし、私もHastableで重複を削除する必要がありますし。私を助けてください。

+0

私はjは "J" のinsted続ける場合には、エラーを与えている:のような

何か。ありがとうございました。 – gthm

答えて

1

ここに正しいコードがあります。

import java.util.ArrayList; 
import java.util.Hashtable; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Set; 
import java.util.Vector; 


public class Main { 
/** 
* @param args 
*/ 
/*public static void main(String[] args) { 
    List<Integer> intList = new ArrayList<Integer>(); 
    intList.add(0, new Integer(1)); 
    intList.add(1, new Integer(1)); 
    intList.add(2, new Integer(1)); 
    intList.add(3, new Integer(1)); 
    intList.add(4, new Integer(1)); 
    intList.add(5, new Integer(1)); 

}*/ 


public static void main(String [] args){ 
Vector<String> vec = new Vector<String>(); 

Hashtable<Integer, String> names=new Hashtable(); 
vec.addElement(new String("name1")); 
vec.addElement(new String("name2")); 
vec.addElement(new String("name3")); 
vec.addElement(new String("name4")); 
vec.addElement(new String("name5")); 

int VecSize=vec.size(); 

for (int i=0;i<VecSize;i++){ 

names.put(new Integer(i), new String(vec.elementAt(i))); 
} 

Set set=names.keySet(); 
Iterator itr= set.iterator(); 

while (itr.hasNext()){ 
Integer temp = (Integer) itr.next(); 
System.out.println(temp+":"+names.get(temp));} 
System.out.println(); 
}} 
+0

ベクトルに重複している名前がある場合、その名前を削除する方法を教えてください。新しい({ \t(names.containsValue(vec.elementAt(I))!)場合 \t \t names.put – gthm

+0

あなたは(私は++;;私はVecSizeを

+0

に格納しながらチェックする必要があります整数(i)、新しい文字列(vec.elementAt(i))); \t} –

2

ああ、HashtableVector、非常に古い学校。あなたはSetHashMapを使って物事を簡素化できるのだろうか?

Set<String> vec = new HashSet<String>(); 

Map<Integer, String> names = new HashMap<Integer, String>(); 

//the set will automatically filter out duplicate values 
vec.add(new String("name1")); 
vec.add(new String("name2")); 
vec.add(new String("name3")); 
vec.add(new String("name4")); 
vec.add(new String("name5")); 

Integer serialNumber = 0; 
for (String name : vec) { 
    names.put(serialNumber, name); 
    serialNumber++; 
} 

for (Integer temp : names.keySet()) { 
    System.out.println(temp + ":" + names.get(temp)); 
    System.out.println(); 
} 
関連する問題