如何解决在数组中的每个第二个元素之后添加数据
我想在每个第二个元素之后在数组中添加对象/数据。为了更清楚一点,我将使用一个简单的示例
我有个arrayList:
List<Object> list = new ArrayList<>();
list.add("messi");
list.add("ronaldo");
list.add("rooney");
list.add("pogba");
list.add("hazard");
print(list);
//output : [messi,ronaldo,rooney,pogba,hazard]
我想要的是:
//[messi,DATA,hazard]
我如何实现这一目标。
在每个第二个元素之后在数组中添加数据。
解决方法
通过维护计数器。
public class Main {
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
list.add("messi");
list.add("ronaldo");
list.add("rooney");
list.add("pogba");
list.add("hazard");
int counter = 0 ;
List<Object> data = new ArrayList<>();
for(Object obj : list){
data.add(obj);
counter = counter + 1;
if(counter%2 == 0)
data.add("DATA");
}
for(Object obj : data)
System.out.println(obj);
}
}
,
因此,您可以做的是创建一个新列表来存储带有新对象的旧数据:
List<Object> list = new ArrayList<>();
List<Object> newlist = new ArrayList<>();
list.add("messi");
list.add("ronaldo");
list.add("rooney");
list.add("pogba");
list.add("hazard");
for(int i = 0; i < list.size(); i++) {
if(i%2==0) {
// Add DATA after 2 items
newlist.add(data);
}
newlist.add(list.get(i));
}
请问有人格式化,因为我正在用手机写信。
,class sample {
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
sample.addList("messi",list);
sample.addList("ronaldo",list);
sample.addList("rooney",list);
sample.addList("pogba",list);
sample.addList("hazard",list);
System.out.println(list);
}
private static void addList(String value,List<Object> objects) {
if (!objects.isEmpty() && (objects.size() % 3 == 2)) {
objects.add("Data");
}
objects.add(value);
}
}
您可以如上所述创建一种实用程序方法。
对于每次添加元素之前,请检查是否 list.size() % 3 == 2
,然后添加其他元素。
这将为您提供帮助。
,查看所需的输出和插入的DATA值的索引:
class PlyViewportWidget(QtWidgets.QOpenGLWidget):
# [...]
def initializeGL(self):
# [...]
self.vao = gl.glGenVertexArrays(1) # <---
gl.glBindVertexArray(self.vao) # <---
self.vbo = gl.glGenBuffers(1)
self.ebo = gl.glGenBuffers(1)
gl.glBindBuffer(gl.GL_ARRAY_BUFFER,self.vbo)
gl.glBufferData(gl.GL_ARRAY_BUFFER,vertices.nbytes,vertices,gl.GL_STATIC_DRAW)
gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER,self.ebo)
gl.glBufferData(gl.GL_ELEMENT_ARRAY_BUFFER,indices.nbytes,indices,gl.GL_STATIC_DRAW)
gl.glEnableVertexAttribArray(0)
gl.glVertexAttribPointer(0,3,gl.GL_FLOAT,gl.GL_FALSE,3 * ctypes.sizeof(ctypes.c_float),ctypes.c_void_p(0))
gl.glBindBuffer(gl.GL_ARRAY_BUFFER,0)
gl.glBindVertexArray(0)
DATA值进入索引2、5、8、11 ...
这意味着这是一个简单的[messi,ronaldo,DATA,rooney,pogba,hazard]
0 1 2 3 4 5 6
循环,调用add(int index,E element)
:
for
输出
List<Object> list = new ArrayList<>();
list.add("messi");
list.add("ronaldo");
list.add("rooney");
list.add("pogba");
list.add("hazard");
System.out.println(list);
for (int i = 2; i < list.size(); i += 3) {
list.add(i,"DATA");
}
System.out.println(list);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。