我有一行我需要解析看起来像:
@UNIT,a,b,c,,,,d,e,,,
我希望Java在列表中存储以下值:
[0] => a
[1] => b
[2] => c
[3] => null
[4] => null
[5] => null
[6] => d
[7] => e
[8] => null
[9] => null
[10] => null
Run Code Online (Sandbox Code Playgroud)
我想用逗号分隔值,并用空格替换空值null.
我使用以下代码存档大部分内容:
metaObject.unit = Arrays.stream(line
.split(","))
.skip(line.startsWith("@UNIT,") ? 1 : 0)
.map(String::trim)
.map(s -> " ".equals(s) || "".equals(s) || "_".equals(s)? null : s)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在哪里metaObject.unit定义为List<String> unit = new ArrayList<String>();
问题是Java忽略了在最后一个非空元素之后出现的空元素.我在给定的情况下得到的输出是:
[0] => a
[1] => b
[2] => c …Run Code Online (Sandbox Code Playgroud) 是否可以使用模运算创建python for循环?我在 Python 中有一个环形缓冲区,我想迭代startPos和endPos索引之间的元素,其中的startPos值可以大于endPos. 在其他编程语言中,我会用模运算符直观地实现这一点:
int startPos = 6;
int endPos = 2;
int ringBufferSize = 8;
for(int i = startPos, i != endPos, i = (i+1) % ringBufferSize) {
print buffer.getElementAt(i);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Python 中轻松做到这一点?我只找到了
for i in list:
print buffer[i]
Run Code Online (Sandbox Code Playgroud)
语法但没有为我的问题提供等效解决方案。
我的下一个方法是在迭代存储在列表中的索引之前提前创建列表。但是有没有办法像在其他编程语言中一样通过直接在 for 循环中使用模运算来做到这一点?