在Java </string []>中查找ArrayList <string []>中的元素

时间:2011-07-13 20:51:52

标签: java arraylist

根据“子元素”找到ArrayList元素的最有效方法是什么?

例如,我有一个名为test的ArrayList,由这些数组组成:

{a,first}
{b, second}
{c, third}
{d, fourth}

我正在尝试创建一个方法,以便我可以找到每个子元素的第二个元素(字符串数组)。我的方法是这样的:

public static String getElement(String key, ArrayList<String[]> haystack)

所以调用方法

getElement("a", test)

将返回字符串“first”。我知道我可以遍历整个阵列并找到它,但我想知道是否会有更有效的方法。 感谢

3 个答案:

答案 0 :(得分:5)

我认为您实际上可能正在寻找地图实施。

如果没有,你的选择是强制它,这意味着你必须扫描元素列表,然后查看数组中的第一个元素,如果它相等,则返回第二个元素。

for ( String[] a : haystack ) {

       if ( key.equals(a[0])
             return a[1];
}

编辑 -

你可以通过迭代来获取arraylist并将其转换为地图。这只有在给你一次ArrayList并且你必须重复执行“get”操作时才有用。

Map<String, String> myMap = new HashMap<String, String>();

for ( String[] a : haystack ) 
    myMap.put(a[0] , a[1]);

完成后,您只需拨打

即可
myMap.get(key);

答案 1 :(得分:0)

请使用Map代替ArrayList。或者你给别人一份清单。

如果必须使用列表,并且列表未排序,并且您只需要执行一次操作,则可以遍历外部数组。

答案 2 :(得分:0)

您可以定义Pair

public class Pair
{
    private String key;
    private String string;
    public Pair(String key, String string)
    {
        this.key = key;
        this.string = string;
    }
    public String getKey(){return key;}
    public String getString(){return string;}
}

然后像:

一样使用它
public static String getElement(String key, ArrayList<Pair> list)
for(Pair p : list)
{
    if(p.getKey().equals(key)) return p.getString();
}