diff --git a/core/src/processing/data/Table.java b/core/src/processing/data/Table.java index 93ac70883..99208a718 100644 --- a/core/src/processing/data/Table.java +++ b/core/src/processing/data/Table.java @@ -1057,10 +1057,34 @@ public class Table { public void removeColumn(int column) { - Object[] temp = new Object[columns.length + 1]; - System.arraycopy(columns, 0, temp, 0, column); - System.arraycopy(columns, column+1, temp, column, (columns.length - column) + 1); - columns = temp; + int newCount = columns.length - 1; + + Object[] columnsTemp = new Object[newCount]; + HashMapBlows[] catTemp = new HashMapBlows[newCount]; + + for (int i = 0; i < column; i++) { + columnsTemp[i] = columns[i]; + catTemp[i] = columnCategories[i]; + } + for (int i = column; i < newCount; i++) { + columnsTemp[i] = columns[i+1]; + catTemp[i] = columnCategories[i+1]; + } + + columns = columnsTemp; + columnCategories = catTemp; + + if (columnTitles != null) { + String[] titlesTemp = new String[newCount]; + for (int i = 0; i < column; i++) { + titlesTemp[i] = columnTitles[i]; + } + for (int i = column; i < newCount; i++) { + titlesTemp[i] = columnTitles[i+1]; + } + columnTitles = titlesTemp; + columnIndices = null; + } }