删除并移动表中的元素:java

时间:2012-12-15 23:17:56

标签: java swing

private JEditorPane textArea[]= new JEditorPane[maxTabs];

我有这个表,我想删除一些元素并移动其他元素,例如,如果我删除第二个元素,第三个元素将代替第二个元素,依此类推。

2 个答案:

答案 0 :(得分:0)

您可以使用System.arraycopy()移动数组块:参见https://stackoverflow.com/a/5536023/150001

但是,如果可以的话,可以考虑使用像java.util.LinkedList这样的Collection类,它更适合删除和重新排序元素。如果在完成删除/移动时仍然需要一个数组(可能是您正在使用的API需要它),您可以使用toArray()方法。

答案 1 :(得分:0)

根据您感兴趣的情况(我们删除例如位置1处的元素)

1)如果元素应该向左移动,最后一个元素应该设置为0或null,具体取决于数组的类型,如

在[0,1,2,3,4]之前 在[0,2,3,4,0]之后

你可以使用

System.arraycopy(textArea, index+1, textArea, index, textArea.length-index-1);
array[array.length-1]=null;

2)当您想要用不包含选定元素的新数组替换旧数组时,如

在[0,1,2,3,4]之前 在[0,2,3,4]之后//我们删除了位置1的元素(新数组更小)

你可以尝试这样的事情

List<JEditorPane> listCopy = new ArrayList<JEditorPane>(
        Arrays.asList(textArea));
listCopy.remove(index);
textArea = listCopy.toArray(new JEditorPane[listCopy.size()]);