Сделать лучшую реализацию, модифицируя ArrayList> - PullRequest
2 голосов
/ 01 марта 2011

У меня есть список hashmap.Одно поле представляет собой целое число, а другое - логическое значение, которое сообщит мне, выбран ли этот элемент.маркировка нового.Я сделал этот кусок кода, но я хотел бы знать, есть ли лучший способ сделать это.

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

Пожалуйста, не используйте список карт, чтобы делать то, что вы делаете.

Используйте BitSet, он предназначен именно для этой цели.(В зависимости от ваших требований вам может понадобиться список битовых наборов, но никогда не список карт, особенно не из Boolean в любой тип.)).

1 голос
/ 01 марта 2011
  1. Объявите интерфейсы, а не конкретные типы, то есть используйте List и Map вместо ArrayList и HashMap
  2. "true" явно неверно - должно быть true, так как первый является строкой, последний - Boolean

Что касается логики вашего кода, мне было бы легче прокомментировать, если бы вы объяснили немного больше / лучше, что вы пытаетесь сделать.

Редактировать: Если я понимаю, что вы пытаетесь сделать правильно, тогда я предлагаю, чтобы у вас был новый класс, что-то вроде SelectedItem, в котором есть id и метод с именем isSelected(). Затем вы вызываете метод, такой как getItems(boolean selected) или getItems для VisualisationBean. Первый даст вам только те элементы, которые выбраны или не выбраны, последний даст вам все элементы, и вам придется перебирать их, чтобы увидеть, какой из них выбран, а какой нет. Изменения такого типа заставили бы его чувствовать себя более объектно-ориентированным, нежели обрабатывать структуры данных.

Edit2: Или, в зависимости от ваших потребностей, следуйте предложению @Sean Patrick Floyd

0 голосов
/ 01 марта 2011

Сделать небольшой вспомогательный класс (в упрощенном коде)

class VisiblitySetting {
  public static int InvalidIndex = -1;
  public boolean IsSelectedNow;
  public boolean WasSelectedBefore;
  public int SelectionIndex;
}

ArrayList<int> wasselected = ...;
ArrayList<int> isnowselected = ...;
VisualizationBean visualizationBean = new VisualizationBean();
ArrayList<VisiblitySetting> resultsPerPage =  visualizationBean.getResultsPerPage();
for (Iterator iterator = resultsPerPage.iterator(); iterator.hasNext();) {
  VisiblitySetting vis = (VisiblitySetting) iterator.next();
  if(vis.IsSelectedNow){
   wasselected.add(vis.SelectionIndex);
   vis.IsSelected = false;
  }
  else if(vis.WasSelectedBefore){
   isnowselected.add(vis.SelectionIndex);
   vis.IsSelected = false;
  }
 }
}

Но я мог неправильно понять ваш код. Использование такого хэша не имеет особого смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...