如何比较向量和int中的对象JAVA

如何比较向量和int中的对象JAVA,java,vector,comparison,Java,Vector,Comparison,我试图使用if条件来比较向量中表示整数的对象与int类型的值,这样我就可以根据它们在向量中出现的次数来增加向量中出现的对象。我一辈子都不能把它编译出来。这是代码 package countjava; import java.util.*; public class Count { public static void main(String[] args) { Vector vect = new Vector(); int[] amounts = n

我试图使用if条件来比较向量中表示整数的对象与int类型的值,这样我就可以根据它们在向量中出现的次数来增加向量中出现的对象。我一辈子都不能把它编译出来。这是代码

package countjava;
import java.util.*;

public class Count {

    public static void main(String[] args) {

        Vector vect = new Vector();
        int[] amounts = new int[100];

        for (int i = 0; i <= 9999; i++) {
            VectorIntObject intObject = 
                    new VectorIntObject((int)Math.random() * 100);
            vect.add(intObject);
        }

        Collections.sort(vect);
        for (int i =0; 1 < 40; i++) {
            System.out.println(vect.get(i));
        }

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j <= 99; j++) {
                Object ourObject = vect.get(i);
                if (ourObject.getVectorIntValue() == j) {
                    amounts[j]++;
                }
            }
        }

        for (int j = 0; j <= 99; j++) {
                System.out.println(amounts[j]);
        }
    }
}

class VectorIntObject {
    int value;
    public VectorIntObject(int value) {
        this.value = value;
    }

    public int getVectorIntValue() {
        return this.value;
    }
}
java;
导入java.util.*;
公共类计数{
公共静态void main(字符串[]args){
向量vect=新向量();
整数[]金额=新整数[100];
对于(inti=0;iEDIT):“不可访问”语句问题就是因为这个原因

for (int i =0; 1 < 40; i++)
另外,我建议使用
ArrayList
而不是
Vector

如果由于某种原因您不能使用Java 1.5或更高版本,因此不能使用泛型,那么您必须在循环中强制转换:

for (int i = 0; i < 10; i++) {
    for (int j = 0; j <= 99; j++) {
        VectorIntObject ourObject = (VectorIntObject) vect.get(i);
        if (ourObject.getVectorIntValue() == j) {
            amounts[j]++;
        }
    }
}
for(int i=0;i<10;i++){
对于(int j=0;jEDIT):“不可访问”语句问题就是因为这个原因

for (int i =0; 1 < 40; i++)
另外,我建议使用
ArrayList
而不是
Vector

如果由于某种原因您不能使用Java 1.5或更高版本,因此不能使用泛型,那么您必须在循环中强制转换:

for (int i = 0; i < 10; i++) {
    for (int j = 0; j <= 99; j++) {
        VectorIntObject ourObject = (VectorIntObject) vect.get(i);
        if (ourObject.getVectorIntValue() == j) {
            amounts[j]++;
        }
    }
}
for(int i=0;i<10;i++){

对于(int j=0;j首先,这将不会编译:

Object ourObject = vect.get(i);
if (ourObject.getVectorIntValue() == j) {
    amounts[j]++;
}
当您从向量返回
对象
并尝试调用
getVectorIntValue()
而不将其键入
VectorIntObject

如果您使用的是JDK5及更高版本,我建议使用泛型,并为Vector指定一个类型

Vector<VectorIntObject> vect = new Vector<VectorIntObject>();
否则,类型转换就可以了


首先,这不会编译:

Object ourObject = vect.get(i);
if (ourObject.getVectorIntValue() == j) {
    amounts[j]++;
}
当您从向量返回
对象
并尝试调用
getVectorIntValue()
而不将其键入
VectorIntObject

如果您使用的是JDK5及更高版本,我建议使用泛型,并为Vector指定一个类型

Vector<VectorIntObject> vect = new Vector<VectorIntObject>();
否则,类型转换就可以了


编译器是一个很棒的工具。它最大的特点之一是用英语报告错误。请回答。这是你的真实代码吗?你的排序应该失败,因为你的VectorIntObject是不可比较的,而且你没有使用自定义比较器调用排序。顺便说一句:Vector是一个遗留类,在Java 1.2(1998)中被替换通过ArrayList。除非你必须使用它,否则我不会使用它。@Peter Lawrey,我认为在高等教育中他们不会强调这一点。列表和向量仍然在教授,但没有人提到java中对向量的否定。@Elite,这就是为什么我想我可能会提到它。当老师学习java时,这可能是一门传统课程。:)编译器是一个很棒的工具。它最大的特点之一是用英语报告错误。请回答。这是你的真实代码吗?你的排序应该失败,因为你的VectorIntObject是不可比较的,而且你没有使用自定义比较器调用排序。顺便说一句:Vector是一个遗留类,在Java 1.2(1998)中被替换通过ArrayList。除非你必须使用它,否则我不会使用它。@Peter Lawrey,我认为在高等教育中他们不会强调这一点。列表和向量仍然在教授,但没有人提到java中对向量的否定。@Elite,这就是为什么我想我可能会提到它。当老师学习java时,这可能是一门传统课程。:)是的,好的,我是这样铸造的,应该这样发布,但是当我这样做的时候,一个次要的问题出现了。上面for循环的第一行得到了一个编译器错误“unreachable statement”。我进行了铸造,看看它是否会修复“unreachable”,它确实修复了,但是与您上面指出的问题一样。@masstrike:请参阅我的编辑(在答案的顶部)。这就是为什么当你问问题时,你应该总是引用任何编译器错误。是的,好的,我是这样铸造的,应该这样发布的,但当我这样做时,就会出现第二个问题。上面for循环的第一行得到一个编译器错误“unreachable statement”。我做了一个替换,看看它是否能修复“不可访问”的问题,它确实修复了,但解决了您上面指出的问题。@MassStrike:请参见我的编辑(在答案的顶部)。这就是为什么您在问问题时总是要引用任何编译器错误的原因。类型转换是我最初的解决方案,但它使编译器声明“不可访问语句”对于它正上方的for循环,我不知道为什么。我在没有typecast的情况下发布了一个错误。Typecasting是我最初的解决方案,但它使编译器声明它正上方的for循环是“无法访问的语句”,我也不知道为什么。我在没有typecast的情况下发布了一个错误。