вторник, 2 апреля 2013 г.

How to disable scrollbars in natTable?

The scrollbars are on the NatTable intself (Scrollable interface). If you are not using a ViewportLayer you can call natTable.getVerticalBar().setVisible(false), natTable.getHorizontalBar().setVisible(false); That will hopefully work for you.

The ViewportLayer only enables the scrollbars. They are disabled by default.

NatTable can be constructed with an optional style, if you don't include the SWT.VERTICAL/HORIZONTAL scrollbars a null pointer exception is thrown when NatTable tries to disable the scrollbars. I think that's a bug.

суббота, 30 марта 2013 г.

Comparable


Comparable - это интерфейс, который позволяет сравнить объекты с соотвествии с натуральным порядком.

Списки или массивы объектов классов, реализующих данный интерфейс могут быть отсортированны автоматически с помощью соответсвующих статических функций Collections.sort() и Arrays.sort().

Интерфейс Comparable объявляет один единственный метод, который служит для определения натурального порядка экземпляров класса:
public interface Comparable<T> {
    public int compareTo(T obj);
}

Этот метод сравнивает вызывающий объект с указанным в качестве входного параметра метода.

Метод compareTo() возвращает:
  • отрицательное значение -  если вызывающий объект имеет меньшее значение
  • 0 - если объекты равны
  • положительное значение - если вызывающий объект имеет большее значение
Натуральный порядок подразумевает выполнение следующего правила:
  • consistent with equals - если объекты равны по функции compareTo(), то они должны быть также равны и по функции equals(). Это должно быть справедливо для любых двух объектов класса. Стоит принять во внимание, что null не является экземпляром ни одного класса, поэтому:  
    • compareTo(null) - должна выбрасывать NullPointerException
    •  equals(null) - должна возвращать false

    Выполнение данного правила строго рекомендованно, хотя и не обязательно. Но в этом случаем не будет нарушен контракт для отсортированных наборов и карт, использующий естественное упорядочивание согласованное с равенством.
Ряд классов уже реализует интерфейс Comparable. В их число входят такие классы, как: Byte, Character, Double, Float, Long, Short, Integer, String, BigDecimal, BigInteger, Time, Date, File, URI и ряд других классов.

За исключением BigDecimal, все из перечисленных классов имеют натуральный порядок, который согласуются с равенством.

При попытке отсортировать список, набор  используя Collections.sort(), элементы которого не реализуют Comparable интерфейс, будет ошибка компиляции:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<Person>). 
The inferred type Person is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>

При попытке отсортировать массив  используя Arrays.sort(), элементы которого не реализуют Comparable интерфейс, будет выброшено ClassCastException исключение.

Отличие в том, что коллекции являются типизированными, а в случае с массивами используеся Object[].



четверг, 28 марта 2013 г.

LinkedList

LinkedList

summary

 Связанный список обеспечивает наибольшую производительность при определенных условиях.

definition

LinkedList - связанный список

pros

  • самый быстрый из всех реализаций списков при вставке объекта в середину.

cons

  • самый медленный из списков при получении доступа из середины списка

uses

Там где необходима быстрая вставка.
Пример: список введенных web-адресов. При добавлении нового, если уже содержится (чтобы небыло дубликатов), то переноситься в начало списка.

ArrayList

definitions

  • ArrayList - автоматически расширяемый массив.
  • ArrayList - списочный массив.
  • ArrayList - список-массив.

description

ArrayList является более эффективным в общем случае использования списка.

ArrayList использует массив для хранения элементов списка. А это подразумевает, что доступ к элементу по индексу, является очень быстрым.

При вставке нового элемента в середину массива, для смещения последующих элементов используется нативная функция System.arraycopy().

В случае использования обычного массива, придётся заново выделять память и перезаписывать элементы.

Размер массива поменять нельзя, после того как была выделена память.

Как и любой список, ArrayList позволяет хранить повторяющиеся элементы.