[英]How do I implement a nested ArrayList and iterate through them in Android Java
我正在尝试创建一个结构,其中将有多个String值的列表,例如“ 0212”,并且我想具有三个ArrayList。 第一个ArrayList将采用值“ 02”的第一部分,第二个将采用第二部分“ 1”,而第三个将采用第三值“ 2”。 然后,我希望能够遍历值列表,以便可以更快地找到特定的值,因为对于值的第一部分和第二部分,多个值将具有相同的值。 然后,我想将其链接到具有匹配“ 0212”的值的对象。 我希望有人能理解我要解释的内容,如果有人能帮助我,我将不胜感激。 先感谢您。
这是我目前将字符串值与ArrayList中的DataObject地址值进行匹配的代码:
public void setUpValues()
{
String otherString = "4210";
Iterator<DataObject> it = dataObjects.iterator();
while(it.hasNext())
{
DataObject currentDataObject = it.next();
if(currentDataObject.getAddress().equals(otherString))
{
System.out.println("IT WORKSSSSSS!");
currentDataObject.setValue("AHHHHHHHHH");
System.out.println("Data Object Address: " + currentDataObject.getAddress());
System.out.println("Data Object Type: " + currentDataObject.getType());
System.out.println("Data Object Value: " + currentDataObject.getValue());
System.out.println("Data Object Range: " + currentDataObject.getRange());
}
else
{
}
}
}
由于值的定义非常严格(三个部分,每个部分由一个字节表示),我认为您可以基于Map
构建轻量级的解决方案:
Map<Byte, ArrayList<Byte>> firstSegments;
Map<Byte, ArrayList<Byte>> secondSegments;
Map<Byte, FinalObject> thirdSegments;
其中, FinalObject
是完全组装的数据类型(例如, Byte[3]
)。 这可以按段提供有效的查找,但是您需要遍历数组以查找要检查的“下一个”段组。 大致:
Byte[3] needle = ...;
Byte firstSeg = ...;
Byte secondSeg = ...;
Byte thirdSeg = ...;
for (Byte b1 : firstSegments.get(firstSeg)) {
if (b1.equals(secondSeg)) {
for (Byte b2 : secondSegments.get(b1)) {
if (b2.equals(thirdSeg)) {
return thirdSegments.get(b2); // found a match
}
}
}
}
从您的问题尚不清楚,但是如果您要尝试确定给定的Byte
段是否在数组之一中并且不关心对其进行迭代,则使用Set<Byte>
会更干净更有效。而不是ArrayList<Byte>
。 Set
为此提供了一个快速的contains()
方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.