我对使用列表有疑问,
我在GUI中使用composits块编写了我的数据,但是现在当我处理其中一个块时,我需要在块下面创建我动态更改位置的块。如果我有4个块,并且我删除第二个块,我想让第3和第4块进入第2和第3位,因为当我删除第2块时,他的位置是空的空间..
TabItem tbtmStudent = new TabItem(tabFolder_1, SWT.NONE);
tbtmStudent.setText("Student");
ScrolledComposite scrolledComposite_1 = new ScrolledComposite(tabFolder_1, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
scrolledComposite_1.addMouseWheelListener(new MouseWheelListener() {
public void mouseScrolled(MouseEvent e) {
scrolledComposite.setFocus();
}
});
tbtmStudent.setControl(scrolledComposite_1);
scrolledComposite_1.setExpandHorizontal(true);
scrolledComposite_1.setExpandVertical(true);
List<STUDENT> allSTUDENTNodes = currentData.getStudentNodes();
Composite studentChild = new Composite(scrolledComposite_1, SWT.NONE);
studentChild.setLayout(new GridLayout());
for(STUDENT studentNode: allSTUDENTNodes){
new STUDENTNode(studentChild, SWT.NONE, studentNode);
Composite achivementsChild = new Composite(scrolledComposite_1, SWT.DEFAULT);
achivementsChild.setLayout(new GridLayout());
for(Achivements achivementsNode: studentNode.getAchivements()){
new AchivementsNode(mscbcChild, SWT.NONE, achivementsNode);
}
}
scrolledComposite_1.setContent(studentChild);
scrolledComposite_1.setMinSize(studentChild.computeSize(SWT.DEFAULT, SWT.DEFAULT));
答案 0 :(得分:0)
如果您remove
列表中的元素,则列表中稍后的元素将其位置减1。试试这个:
allSTUDENTNodes.remove(2);
然后分别用allSTUDENTNodes.get(2)
和allSTUDENTNodes.get(3)
检查第二个和第三个元素。
请参阅文档中的说明:
E remove(int index)
删除此列表中指定位置的元素(可选 操作)。 向左移动任何后续元素(减去一个 来自他们的索引)。返回从中删除的元素 列表。
参数: index - 要删除的元素的索引返回: 先前在指定位置的元素抛出: UnsupportedOperationException - 如果此列表不支持remove操作 IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; = size())
和
boolean remove(Object o)
从此列表中删除第一次出现的指定元素, 如果它存在(可选操作)。如果此列表不包含 元素,它没有变化。更正式地说,删除元素 最低的索引i使得(o == null?get(i)== null: o.equals(get(i)))(如果存在这样的元素)。如果是这样返回true list包含指定的元素(或等效地,如果此列表 因呼叫而改变了。)
指定人: 删除接口集合参数: o - 要从此列表中删除的元素(如果存在)返回: 如果此列表包含指定的元素,则返回true抛出: ClassCastException - 如果指定元素的类型与此列表不兼容(可选) NullPointerException - 如果指定的元素为null且此列表不允许null元素(可选) UnsupportedOperationException - 如果此列表不支持删除操作
第二个方差调用第一个方差,但首先搜索元素。因此,无论何时调用remove
,它都会将后续元素向左移动,就像您想要的那样。 (http://docs.oracle.com/javase/7/docs/api/java/util/List.html)