在java中的一个Vector矢量的问题.!请求解答 . (100分)

  • 主题发起人 主题发起人 t.j
  • 开始时间 开始时间
T

t.j

Unregistered / Unconfirmed
GUEST, unregistred user!
这是<thanking in java> 中的一个例子.
以下这两句出现错误.
private Vector keys=new Vector();
private Vector values=new Vector();
Vector不是在java类中集成的有吗?
以下是一个散列表的一个例子....包含有Vector()这个句柄.求解答之.
//AssocArray.java
import java.util.*;
public class AssocArray extends Dictionary{
private Vector keys=new Vector();
private Vector values=new Vector();
public int size(){return keys.size();}
public boolean isEmpty(){
return keys.isEmpty();
}
public Object put(Object key,Object value){
keys.addElement(key);
values.addElement(value);
return key;
}
public Object get(Object key){
int index=keys.indexof(key);
if(index==-1) return null;
return values.elementAt(index);
{
public Object remove(Object key){
int index=keys.indexOf(key);
if (index==-1) return null;
keys.removeElementAt(index);
Object returnval=values.elementAt(index);
values.removeElementAt(index);
return returnval;
}
public Enumeration keys(){
return keys.elements();
}
public Enumeration elements(){
return values.elements();
}
public static void main(String[] args){
AssocArray aa=new AssocArray();
for(char c='a';c<='z';c++)
aa.put(String.valueOf(c),String.valueOf(c).toUppercase());
char[] ca={'a','e','i','o','u'};
for(int i=0;i<ca.length;i++)
System.out.println("Uppercase:"+aa.get(String.valueOf(ca)));
}
}
 
好麻烦阿,为什么不使用Hashtable呢
 
现在你是什么问题呀?
 
问题是在引用"Vector keys=new Vector();
Vector values=new Vector();
这个时会出错.后面只要用到keys..和values的地方都会编译不成功。
 
[red]全都是拼写错误
int index=keys.indexof(key);
中的indexof改为indexOf
aa.put(String.valueOf(c),String.valueOf(c).toUppercase());
中的toUppercase改为toUpperCase
[/red]
正确代码如下:
import java.util.*;
public class AssocArray extends Dictionary
{
private Vector keys=new Vector();
private Vector values=new Vector();
public int size()
{
return keys.size();
}
public boolean isEmpty()
{
return keys.isEmpty();
}
public Object put(Object key,Object value)
{
keys.addElement(key);
values.addElement(value);
return key;
}
public Object get(Object key)
{
int index=keys.indexOf(key);
if(index==-1) return null;
return values.elementAt(index);
}
public Object remove(Object key)
{
int index=keys.indexOf(key);
if (index==-1) return null;
keys.removeElementAt(index);
Object returnval=values.elementAt(index);
values.removeElementAt(index);
return returnval;
}
public Enumeration keys()
{
return keys.elements();
}
public Enumeration elements()
{
return values.elements();
}
public static void main(String[] args)
{
AssocArray aa=new AssocArray();
for(char c='a';c<='z';c++)
aa.put(String.valueOf(c),String.valueOf(c).toUpperCase());
char[] ca={'a','e','i','o','u'};
for(int i=0;i<ca.length;i++)
System.out.println("Uppercase:"+aa.get(String.valueOf(ca)));
}
}

 
根本性的错误还是没有解决.
我试过你的那段代码,还是不太正解..
其实那是一个<thanking in java>中的一个例子来的.
它前面的例子我都调试通过了.
 
你的根本性问题到底是什么?
我给你贴的代码我调试过,不会出错!
>问题是在引用"Vector keys=new Vector();
> Vector values=new Vector();
>
>这个时会出错.后面只要用到keys..和values的地方都会编译不成功。
 
以下是我得出的结果
---------- java ----------
Uppercase:A
Uppercase:E
Uppercase:I
Uppercase:O
Uppercase:U
Normal Termination
输出完成(耗费 0 秒)。
 
看你给我这么热情.我给你30会先..
我是说在声明 Vector keys=new Vector();
> Vector values=new Vector();
时出错..大小写的问题我已经试过了.不是这个原因..
你的那段代码我也试过.通不过.
还有.我还往后面看通用集合库的时候出是在例子中.出现的问题..
比如:下面这个例子..可不可以也帮我看看??
package c08.newcollections;
import java.util.*;
public class Map1 {
public final static String[][] testData1 = {
{ "Happy", "Cheerful disposition" },
{ "Sleepy", "Prefers dark, quiet places" },
{ "Grumpy", "Needs to work on attitude" },
{ "Doc", "Fantasizes about advanced degree"},
{ "Dopey", "'A' for effort" },
{ "Sneezy", "Struggles with allergies" },
{ "Bashful", "Needs self-esteem workshop"},
};
public final static String[][] testData2 = {
{ "Belligerent", "Disruptive influence" },
{ "Lazy", "Motivational problems" },
{ "Comatose", "Excellent behavior" }
};
public static Map fill(Map m, Object[][] o) {
for(int i = 0;
i < o.length;
i++)
m.put(o[0], o[1]);
return m;
}
// Producing a Set of the keys:
public static void printKeys(Map m) {
System.out.print("Size = " + m.size() +", ");
System.out.print("Keys: ");
Collection1.print(m.keySet());
}
// Producing a Collection of the values:
public static void printValues(Map m) {
System.out.print("Values: ");
Collection1.print(m.values());
}
// Iterating through Map.Entry objects (pairs):
public static void print(Map m) {
Collection entries = m.entries();// [red][blue][h2]主要是这句错误..我看不明白..[/h2][/blue][/red]
Iterator it = entries.iterator();
while(it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();
System.out.println("Key = " + e.getKey() +
", Value = " + e.getValue());
}
}
public static void test(Map m) {
fill(m, testData1);
// Map has 'Set' behavior for keys:
fill(m, testData1);
printKeys(m);
printValues(m);
print(m);
String key = testData1[4][0];
String value = testData1[4][1];
System.out.println("m.containsKey(/"" + key +
"/"): " + m.containsKey(key));
System.out.println("m.get(/"" + key + "/"): "
+ m.get(key));
System.out.println("m.containsValue(/""
+ value + "/"): " +
m.containsValue(value));
Map m2 = fill(new TreeMap(), testData2);
m.putAll(m2);
printKeys(m);
m.remove(testData2[0][0]);
printKeys(m);
m.clear();
System.out.println("m.isEmpty(): "
+ m.isEmpty());
fill(m, testData1);
// Operations on the Set change the Map:
m.keySet().removeAll(m.keySet());
System.out.println("m.isEmpty(): "
+ m.isEmpty());
}
public static void main(String args[]) {
System.out.println("Testing HashMap");
test(new HashMap());
System.out.println("Testing TreeMap");
test(new TreeMap());
}
}
 
1、我将我贴的代码完整的贴在一个文档中,然后保存为AssocArray.java
编译执行都无任何问题,你所说的通不过我不知道你机器的设置肯定不对。
2、我一会看一下
 
>> Collection entries = m.entries();// 主要是这句错误..我看不明白..
m是个Map接口,而该接口中根本没有定义entries()这个方法,对应返回
Collection 类型的方法是values() 。
改为
Collection entries = m.values();
应该就对了
你看不明白,不会吧!我建议你多看看java sdk带的类的说明文档
看《thanking in java〉不看java sdk的文档是肯定不行的
你可以到java.sun.com下载
 
尽信书不如无书,书上例子有很多也是错的,可能是印刷,也可能是校订的
错误,总之你需要仔细的看和思考
 
看你问问题的方式很是不知所云,建议楼主先看这一篇文章:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1018713
提问的智慧 (How To Ask Questions The Smart Way) ---希望大家都能看看
 
请将你的编译错误信息贴出来看看。
to:cxg
你上这里很勤快嘛[:)]
 
后退
顶部