根据“子元素”找到ArrayList元素的最有效方法是什么?
例如,我有一个名为test的ArrayList,由这些数组组成:
{a,first}
{b, second}
{c, third}
{d, fourth}
我正在尝试创建一个方法,以便我可以找到每个子元素的第二个元素(字符串数组)。我的方法是这样的:
public static String getElement(String key, ArrayList<String[]> haystack)
所以调用方法
getElement("a", test)
将返回字符串“first”。我知道我可以遍历整个阵列并找到它,但我想知道是否会有更有效的方法。 感谢
答案 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();
}