Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Массиватор Сета

  • Автор темы Автор темы Delyfss
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Май 2021
Сообщения
150
Реакции
10
Т.к массиватор листа теперь детектится фт сливаю вам свой selfcode solution для бомпаса отхода под вонтам
Java:
Expand Collapse Copy
package fimozvm.collections;

import java.util.*;

public class ObjectArraySet<K> extends AbstractSet<K> implements Set<K>, java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private transient K[] a;
    private int size;

    @SuppressWarnings("unchecked")
    public ObjectArraySet(int capacity) {
        a = (K[]) new Object[capacity];
    }

    public ObjectArraySet() {
        this(16);
    }

    public ObjectArraySet(Collection<? extends K> c) {
        this(c.size());
        addAll(c);
    }

    @Override
    public boolean add(K k) {
        if (contains(k)) return false;
        if (size == a.length) grow(size + 1);
        a[size++] = k;
        return true;
    }

    @Override
    public boolean contains(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return true;
        return false;
    }

    @Override
    public boolean remove(Object k) {
        int index = indexOf(k);
        if (index == -1) return false;
        removeAt(index);
        return true;
    }

    private int indexOf(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return i;
        return -1;
    }

    private void removeAt(int index) {
        size--;
        if (index != size) System.arraycopy(a, index + 1, a, index, size - index);
        a[size] = null;
    }

    @Override
    public void clear() {
        Arrays.fill(a, 0, size, null);
        size = 0;
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public Object[] toArray() {
        return Arrays.copyOf(a, size);
    }

    @SuppressWarnings("unchecked")
    @Override
    public <T> T[] toArray(T[] array) {
        if (array.length < size)
            return (T[]) Arrays.copyOf(a, size, array.getClass());
        System.arraycopy(a, 0, array, 0, size);
        if (array.length > size)
            array[size] = null;
        return array;
    }

    private void grow(int minCapacity) {
        int newCapacity = Math.max(minCapacity, (int)(a.length * 1.5));
        a = Arrays.copyOf(a, newCapacity);
    }

    @Override
    public Iterator<K> iterator() {
        return new Iterator<K>() {
            int pos = 0;
            int lastReturned = -1;

            @Override
            public boolean hasNext() {
                return pos < size;
            }

            @Override
            public K next() {
                if (!hasNext()) throw new NoSuchElementException();
                lastReturned = pos;
                return a[pos++];
            }

            @Override
            public void remove() {
                if (lastReturned == -1) throw new IllegalStateException();
                removeAt(lastReturned);
                pos = lastReturned;
                lastReturned = -1;
            }
        };
    }
}
 
Т.к массиватор листа теперь детектится фт сливаю вам свой selfcode solution для бомпаса отхода под вонтам
Java:
Expand Collapse Copy
package fimozvm.collections;

import java.util.*;

public class ObjectArraySet<K> extends AbstractSet<K> implements Set<K>, java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private transient K[] a;
    private int size;

    @SuppressWarnings("unchecked")
    public ObjectArraySet(int capacity) {
        a = (K[]) new Object[capacity];
    }

    public ObjectArraySet() {
        this(16);
    }

    public ObjectArraySet(Collection<? extends K> c) {
        this(c.size());
        addAll(c);
    }

    @Override
    public boolean add(K k) {
        if (contains(k)) return false;
        if (size == a.length) grow(size + 1);
        a[size++] = k;
        return true;
    }

    @Override
    public boolean contains(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return true;
        return false;
    }

    @Override
    public boolean remove(Object k) {
        int index = indexOf(k);
        if (index == -1) return false;
        removeAt(index);
        return true;
    }

    private int indexOf(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return i;
        return -1;
    }

    private void removeAt(int index) {
        size--;
        if (index != size) System.arraycopy(a, index + 1, a, index, size - index);
        a[size] = null;
    }

    @Override
    public void clear() {
        Arrays.fill(a, 0, size, null);
        size = 0;
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public Object[] toArray() {
        return Arrays.copyOf(a, size);
    }

    @SuppressWarnings("unchecked")
    @Override
    public <T> T[] toArray(T[] array) {
        if (array.length < size)
            return (T[]) Arrays.copyOf(a, size, array.getClass());
        System.arraycopy(a, 0, array, 0, size);
        if (array.length > size)
            array[size] = null;
        return array;
    }

    private void grow(int minCapacity) {
        int newCapacity = Math.max(minCapacity, (int)(a.length * 1.5));
        a = Arrays.copyOf(a, newCapacity);
    }

    @Override
    public Iterator<K> iterator() {
        return new Iterator<K>() {
            int pos = 0;
            int lastReturned = -1;

            @Override
            public boolean hasNext() {
                return pos < size;
            }

            @Override
            public K next() {
                if (!hasNext()) throw new NoSuchElementException();
                lastReturned = pos;
                return a[pos++];
            }

            @Override
            public void remove() {
                if (lastReturned == -1) throw new IllegalStateException();
                removeAt(lastReturned);
                pos = lastReturned;
                lastReturned = -1;
            }
        };
    }
}
Круто, ну пойдет
 
Т.к массиватор листа теперь детектится фт сливаю вам свой selfcode solution для бомпаса отхода под вонтам
Java:
Expand Collapse Copy
package fimozvm.collections;

import java.util.*;

public class ObjectArraySet<K> extends AbstractSet<K> implements Set<K>, java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private transient K[] a;
    private int size;

    @SuppressWarnings("unchecked")
    public ObjectArraySet(int capacity) {
        a = (K[]) new Object[capacity];
    }

    public ObjectArraySet() {
        this(16);
    }

    public ObjectArraySet(Collection<? extends K> c) {
        this(c.size());
        addAll(c);
    }

    @Override
    public boolean add(K k) {
        if (contains(k)) return false;
        if (size == a.length) grow(size + 1);
        a[size++] = k;
        return true;
    }

    @Override
    public boolean contains(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return true;
        return false;
    }

    @Override
    public boolean remove(Object k) {
        int index = indexOf(k);
        if (index == -1) return false;
        removeAt(index);
        return true;
    }

    private int indexOf(Object k) {
        for (int i = 0; i < size; i++)
            if (Objects.equals(a[i], k)) return i;
        return -1;
    }

    private void removeAt(int index) {
        size--;
        if (index != size) System.arraycopy(a, index + 1, a, index, size - index);
        a[size] = null;
    }

    @Override
    public void clear() {
        Arrays.fill(a, 0, size, null);
        size = 0;
    }

    @Override
    public int size() {
        return size;
    }

    @Override
    public Object[] toArray() {
        return Arrays.copyOf(a, size);
    }

    @SuppressWarnings("unchecked")
    @Override
    public <T> T[] toArray(T[] array) {
        if (array.length < size)
            return (T[]) Arrays.copyOf(a, size, array.getClass());
        System.arraycopy(a, 0, array, 0, size);
        if (array.length > size)
            array[size] = null;
        return array;
    }

    private void grow(int minCapacity) {
        int newCapacity = Math.max(minCapacity, (int)(a.length * 1.5));
        a = Arrays.copyOf(a, newCapacity);
    }

    @Override
    public Iterator<K> iterator() {
        return new Iterator<K>() {
            int pos = 0;
            int lastReturned = -1;

            @Override
            public boolean hasNext() {
                return pos < size;
            }

            @Override
            public K next() {
                if (!hasNext()) throw new NoSuchElementException();
                lastReturned = pos;
                return a[pos++];
            }

            @Override
            public void remove() {
                if (lastReturned == -1) throw new IllegalStateException();
                removeAt(lastReturned);
                pos = lastReturned;
                lastReturned = -1;
            }
        };
    }
}
что это за хуйня я как ебать кодер 3 года я понять нахуй не могу
 
баляя хуля поясните что это такое и как
 
Назад
Сверху Снизу