public boolean isShown() {
for (Column column : values()) {
if (realOrder[column.ordinal()] == -1) {
return false;
}
}
return true;
}
public void hide() {
int index = this.ordinal();
for (int i = 0; i < realOrder.length; i++) {
if (index == i) {
realOrder[i] = -1;
}
}
for (int i = 0; i < realOrder.length; i++) {
for (int j = 0; j < realOrder.length; j++) {
if (realOrder[j] == -1) {
int tmp = realOrder[j];
realOrder[j] = realOrder[i];
realOrder[i] = tmp;
}
}
}
}
я не пойму как эти методы реализовать
вывод в консоль такой
[-1, 2, 1, 0]
[-1, 2, -1, 0]
[2, 0, -1, -1]
или не такой должен быть результат кто может подсказатьpackage com.javarush.task.task25.task2503;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public enum Column implements Columnable{
Customer("Customer"),
BankName("Bank Name"),
AccountNumber("Account Number"),
Amount("Available Amount");
private String columnName;
private static int[] realOrder;
private Column(String columnName) {
this.columnName = columnName;
}
/**
* Задает новый порядок отображения колонок, который хранится в массиве realOrder.
* realOrder[индекс в энуме] = порядок отображения; -1, если колонка не отображается.
*
* @param newOrder новая последовательность колонок, в которой они будут отображаться в таблице
* @throws IllegalArgumentException при дубликате колонки
*/
public static void configureColumns(Column... newOrder) {
realOrder = new int[values().length];
for (Column column : values()) {
realOrder[column.ordinal()] = -1;
boolean isFound = false;
for (int i = 0; i < newOrder.length; i++) {
if (column == newOrder[i]) {
if (isFound) {
throw new IllegalArgumentException("Column '" + column.columnName + "' is already configured.");
}
realOrder[column.ordinal()] = i;
isFound = true;
}
}
}
}
/**
* Вычисляет и возвращает список отображаемых колонок в сконфигурированом порядке (см. метод configureColumns)
* Используется поле realOrder.
*
* @return список колонок
*/
public static List<Column> getVisibleColumns() {
List<Column> result = new LinkedList<>();
return result;
}
/*public static ArrayList<Integer> returnList() {
int[] arrays = new int[realOrder.length];
ArrayList<Integer> columns = new ArrayList<>();
for (Column column : values()) {
int index = column.ordinal(); // получаем индекс енум
for (int i = 0; i < realOrder.length; i++) {
if (index == i && realOrder[i] != -1) { // если индек енум == индексу массива и элемент не равен -1
arrays[realOrder[i]] = column.ordinal(); // добавляем энум
}
}
}
System.out.println(Arrays.toString(arrays));
System.out.println(Arrays.toString(realOrder));
for (int i = 0; i < arrays.length; i++) {
columns.add(arrays[i]);
}
*//*for (int i = 0; i < columns.size(); i++) {
if (columns.get(i) == 0) {
columns.remove(i);
}
}*//*
return columns;
}*/
/**
* @return полное имя колонки
*/
@Override
public String getColumnName() {
return columnName;
}
/**
* Возвращает true, если колонка видимая, иначе false
*/
@Override
public boolean isShown() {
for (Column column : values()) {
if (realOrder[column.ordinal()] == -1) {
return false;
}
}
return true;
}
/**
* Скрывает колонку - маркирует колонку -1 в массиве realOrder.
* Сдвигает индексы отображаемых колонок, которые идут после скрытой
*/
@Override
public void hide() {
int index = this.ordinal();
for (int i = 0; i < realOrder.length; i++) {
if (index == i) {
realOrder[i] = -1;
}
}
System.out.println(Arrays.toString(realOrder));
for (int i = 0; i < realOrder.length; i++) {
for (int j = 0; j < realOrder.length; j++) {
if (realOrder[j] == -1) {
int tmp = realOrder[j];
realOrder[j] = realOrder[i];
realOrder[i] = tmp;
}
}
}
System.out.println(Arrays.toString(realOrder));
}
}