我将以下内容作为名为AcidExp
的多维arrayList的一部分[[[Acid Exposure (pH), Total], [, Total Normal], [Clearance pH : Channel 7], [Number of Acid Episodes, 22], [Time, 20.6 min], [Percent Time, 2.7%], [Mean Acid Clearance Time, 56 sec], [Longest Episode, 2.7 min], [Gastric pH : Channel 8], [Time pH<4.0, 713.8 min], [Percent Time, 93.3%]]]
[[[Reflux Study Summary], [Acid Exposure (pH), Upright, Recumbent, Total], [, Upright Normal Recumbent Normal Total], [Normal], [# of Episodes Channel 7, 24, 0, 24], [Percent Time Clearance pH, 3.2%, (< 6.3), 0.0%, (< 1.2), 1.8%, (< 4.2)]]]
[[[blabla], [jonny, billy, judy, tim], [pH, 3.2%, 0.0%, 1.8%]]]
我似乎无法单独引用每个ArrayLists,因此我可以单独操作它们。
这是我的代码:
ArrayList<ArrayList> AcidExp = new ArrayList<ArrayList>();
Pattern tu1 = Pattern.compile("Acid Exposure \\(pH\\)");
Pattern tu2 = Pattern.compile("Upright");
for (List<String> row : twoDim) {
boolean found = false;
if (tu1.matcher(row.get(0).toString()).matches()) {
found = true;
break;
}
if (found) {
AcidExp.add((ArrayList<List<String>>) twoDim);
System.out.println(AcidExp.get(0));
}
}
但这只是给了我原来的外支架被删除。
[[Acid Exposure (pH), Total], [, Total Normal], [Clearance pH : Channel 7], [Number of Acid Episodes, 22], [Time, 20.6 min], [Percent Time, 2.7%], [Mean Acid Clearance Time, 56 sec], [Longest Episode, 2.7 min], [Gastric pH : Channel 8], [Time pH<4.0, 713.8 min], [Percent Time, 93.3%]]
[[Reflux Study Summary], [Acid Exposure (pH), Upright, Recumbent, Total], [, Upright Normal Recumbent Normal Total], [Normal], [# of Episodes Channel 7, 24, 0, 24], [Percent Time Clearance pH, 3.2%, (< 6.3), 0.0%, (< 1.2), 1.8%, (< 4.2)]]
[[blabla], [jonny, billy, judy, tim], [pH, 3.2%, 0.0%, 1.8%]]
我怎样才能单独引用ArrayList中的每个List?
目前如果我这样做
`AcidExp.get(0).get(1)` I just get
[Acid Exposure (pH), Total]
[Reflux Study Summary]
[blabla]
如果我这样做
AcidExp.get(1)
我得到了
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
我认为这与我想要的所有ArrayLists都存储在AcidExp的第一个元素中的事实有关,我猜想但是我认为我的所有ArrayLists都混淆了
答案 0 :(得分:0)
我并不完全知道问题是什么,但是在#define EXAMPLE(IDN) Example IDN{ #IDN }
EXAMPLE(object);
- 句子的正文中你添加了一个if
- 语句,所以循环就在那里结束了。 break
- 部分位于循环内,因此永远不会执行 - 只要if(found)
设置为found
,您就会离开循环。也许这就是问题?
答案 1 :(得分:0)
好的,我想我已经想出了你想要实现的目标。你基本上试图找到具有“酸暴露(ph)”作为其元素之一的集合。错误基本上是你只有一个循环迭代数据集,你需要两个。
然后,您可以遍历所有集合,然后遍历每个集合中的所有元素。然后,一旦匹配完成,你就可以突破内循环但仍然继续查看其余的集合。
见下面的代码:
ReplaceWhat,ReplaceTo
192.168.1.1,server1
192.168.1.20,SERVER2
输出:
public static void main (String[] args) throws java.lang.Exception
{
List<List<String>> set1 = new ArrayList() {{
add(Arrays.asList("Acid Exposure (pH)", "Total"));
add(Arrays.asList("", "Total Normal"));
add(Arrays.asList("AClearance pH : Channel 7"));
add(Arrays.asList("Number of Acid Episodes", "22"));
}};
List<List<String>> set2 = new ArrayList() {{
add(Arrays.asList("Reflux Study Summary"));
add(Arrays.asList("Acid Exposure (pH)", "Upright", "Recumbent", "Total"));
}};
List<List<String>> set3 = new ArrayList() {{
add(Arrays.asList("blabla"));
add(Arrays.asList("jonny", "billy", "judy", "tim"));
}};
List<List<List<String>>> twoDim = new ArrayList() {{
add(set1);
add(set2);
add(set3);
}};
ArrayList<List<List<String>>> acidExp = new ArrayList<>();
Pattern tu1 = Pattern.compile("Acid Exposure \\(pH\\)");
for (List<List<String>> row : twoDim) {
for(List<String> element : row) {
String val = element.get(0);
if (tu1.matcher(val).matches()) {
acidExp.add(row);
break;
}
}
}
System.out.println(acidExp);
}
acidExp变量现在只包含第一组(注意你实际上不需要布尔标志)。