java - 在 Java 上搜索 Vector 内的属性

标签 java search vector iterator

我有一个对象的 Vector,并且必须在内部搜索这些对象的随机属性(例如,Plane 类、Vector 包含 Plane;有时我必须搜索 destination,其他则搜索 pilotName)。

我知道我可以使用 Iterator 遍历 Vector,但我一直不知道如何更改 String 和属性之间的比较目的。我想过使用 switch,但另一种意见会很酷。


更新1:

我编写的代码是这样的(Java n00b 警报!):

public int search(String whatSearch, String query){  
    int place = -1;  
    boolean found = false;  
    for ( Iterator<Plane> iteraPlane = this.planes.iterator(); iteraPlane.hasNext() && found == false; ) {  
        Plane temp = (Plane) iteraPlane.next();  
        /* Here is where I have to search for one of many attributes (delimited by whatSearch */ 
    }  
return place;  
}

看来我必须坚持线性搜索(这是我能够付出的代价)。不管怎样,我在想 Java 是否有类似变量变量名(哎哟!)

最佳答案

我假设您的问题是您想要一种根据集合类型的某些属性搜索结果的方法。 Java 在这方面比较弱,因为它最好用具有闭包的语言来表达。你需要的是这样的:

public interface Predicate<T> {
    public boolean evaluate(T t);
}

然后你的搜索方法如下所示:

public static <T> T findFirst(List<T> l, Predicate<T> p) { //use List, not Vector
    for (T t : l) { if (p.evaluate(t)) return t; }
    return null;
}

那么任何人都可以使用这个通用搜索方法。例如,要在Integer vector 中搜索数字:

List<Integer> is = ...
findFirst(is, new Predicate<Integer> {
    public boolean evaluate(Integer i) { return i % 2 == 0; }
});

但是您可以按照您想要的任何方式实现谓词;对于任意搜索

关于java - 在 Java 上搜索 Vector 内的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1055714/

相关文章:

java - 使用 TestNG

java - 在 Java 中检索给定 URL 的最终位置

image - 什么是图像矢量?

c++ - 对结构 vector 进行排序

c++ - 通过保留和复制,还是通过创建和交换来复制 vector 更有效?

java - 即使你抛出一个新的异常,finally block 是否也会运行?

java - .Equals() 在迭代 HashMap 时不起作用

java - 以 "?"作为 clown 的字符串搜索?

c - C 中的二进制搜索无法正常工作

Mysql 要求相关性然后按日期排序