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

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

4

2 回答 2

0

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

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

于 2012-12-15T23:42:16.050 回答
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()]);
于 2012-12-15T23:43:14.247 回答