public class DynamicArray {
int[] data;
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list);
}
}
>>> [1, 2, 3]
public class DynamicArray {
int[] data;
public void add(int element) {
// тут как то должны добавляться элементы
}
}
Куда-то надо добавлять элементы, а массив пустой
Можно попробовать создать внутри массив ограниченного размера
public class DynamicArray {
int[] data;
public void add(int element) {
// тут как то должны добавляться элементы
}
}
Куда-то надо добавлять элементы, а массив пустой
Можно попробовать создать внутри массив ограниченного размера
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// тут как то должны добавляться элементы
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
el4
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
el4
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
el4
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
el4
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// положили элемент в край динамического списка
data[size] = element;
// сдвинули правый край списка
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
// чего сделать надо?
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
// ...
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
// ...
}
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
// ???
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
}
el1
el2
el3
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
@Override
public String toString() {
return Arrays.toString(data);
}
}
public class Main {
public static void main(String[] args) {
// ...
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() {
return Arrays.toString(data);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() {
int[] subArray = Arrays.copyOfRange(data, 0, size);
return Arrays.toString(subArray);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0]
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() {
int[] subArray = Arrays.copyOfRange(data, 0, size);
return Arrays.toString(subArray);
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() {
int[] subArray = Arrays.copyOfRange(data, 0, size);
return Arrays.toString(subArray);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() {
int[] subArray = Arrays.copyOfRange(data, 0, size);
return Arrays.toString(subArray);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() { /* ... */ }
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() { /* ... */ }
// метод который возвращает элемент
public ??? at(int index) {
// ...
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() { /* ... */ }
// метод который возвращает элемент
public int at(int index) {
// ...
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() { /* ... */ }
// метод который возвращает элемент
public int at(int index) {
return data[index];
}
}
public class DynamicArray {
int [] data = new int[3];
int size = 0;
public void add(int element) { /* ... */ }
@Override
public String toString() { /* ... */ }
// метод который возвращает элемент
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
}
Нажал Alt+Insert
public class DynamicArray {
int[] data = new int[3];
int size = 0;
public int getSize() {
return size;
}
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() {
int[] subArray = Arrays.copyOfRange(data, 0, size);
return Arrays.toString(subArray);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray list = new DynamicArray();
for (int i = 0; i < 10; ++i) {
list.add(i);
}
System.out.println(list);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 0; i < 10; ++i) {
arrayList.add(i);
}
System.out.println(arrayList);
}
}
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
public class DynamicArray {
int[] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
int[] data = new int[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
T[] data = new T[3];
int size = 0;
public void add(int element) {
if (size >= data.length) {
int[] newData = new int[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
T[] data = new T[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
T[] newData = new T[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public int at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
T[] data = new T[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
T[] newData = new T[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
T[] data = new T[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
T[] newData = new T[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
T[] data = new T[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
T[] newData = new T[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
Object[] data = new Object[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
T[] newData = new T[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
Object[] data = new Object[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
Object[] newData = new Object[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class DynamicArray <T> {
Object[] data = new Object[3];
int size = 0;
public void add(T element) {
if (size >= data.length) {
Object[] newData = new Object[data.length * 2];
for (int i = 0; i < data.length; ++i) {
newData[i] = data[i];
}
this.data = newData;
}
data[size] = element;
size += 1;
}
public T at(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return (T) data[index];
}
@Override
public String toString() { /*...*/ }
public int getSize() { return size; }
}
public class Main {
public static void main(String[] args) {
DynamicArray<int> list = new DynamicArray<>();
}
}
Нельзя использовать примитивные типы
int, boolean, double etc.
Надо использовать ссылочные типы
Integer, Boolean, Double etc.
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> list = new DynamicArray<>();
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> list = new DynamicArray<>();
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<String> list = new DynamicArray<>();
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<String> list = new DynamicArray<>();
list.add("В");
list.add("лесу");
list.add("родилась");
list.add("елочка");
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<String> list = new DynamicArray<>();
list.add("В");
list.add("лесу");
list.add("родилась");
list.add("елочка");
System.out.println(list);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<String> list = new DynamicArray<>();
list.add("В");
list.add("лесу");
list.add("родилась");
list.add("елочка");
System.out.println(list);
}
}
>>> [В, лесу, родилась, елочка]
el1
el2
el3
el3
el1
el2
el3
el3
el1
el2
el3
el4
el1
el2
el3
el4
Хранит только уникальные элементы
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> a = new DynamicArray<>();
a.add(1);
a.add(2);
a.add(1);
System.out.println(a.getSize());
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> a = new DynamicArray<>();
a.add(1);
a.add(2);
a.add(1);
System.out.println(a.getSize());
}
}
>>> 3
public class Main {
public static void main(String[] args) {
DynamicSet<Integer> a = new DynamicSet<>();
a.add(1);
a.add(2);
a.add(1);
System.out.println(a.getSize());
}
}
public class Main {
public static void main(String[] args) {
DynamicSet<Integer> a = new DynamicSet<>();
a.add(1);
a.add(2);
a.add(1);
System.out.println(a.getSize());
}
}
>> 2
public class DynamicSet {
}
public class DynamicSet extends DynamicArray {
}
public class DynamicSet<T> extends DynamicArray<T> {
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(/* ??? */) {
// Работать должен по принципу:
// если элемент есть то возвращаем его индекс
// если элемента нет то возвращаем -1
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
// Работать должен по принципу:
// если элемент есть то возвращаем его индекс
// если элемента нет то возвращаем -1
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < ???; ++i) {
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < [size или data.length() ???]; ++i) {
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i] == value) {
//...
}
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i] == value) {
return i;
}
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i] == value) {
return i;
}
}
return -1;
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
@Override
public void add(T element) {
super.add(element);
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
@Override
public void add(T element) {
if (???) {
super.add(element);
}
}
}
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
@Override
public void add(T element) {
if (indexOf(element) == -1) {
super.add(element);
}
}
}
public class Main {
public static void main(String[] args) {
DynamicSet<String> a = new DynamicSet<>();
a.add("Ура!");
a.add("Ура!");
a.add("Ура!");
System.out.println(a.getSize());
}
}
public class Main {
public static void main(String[] args) {
DynamicSet<String> a = new DynamicSet<>();
a.add("Ура!");
a.add("Ура!");
a.add("Ура!");
System.out.println(a.getSize());
}
}
>>> 1
public class Main {
public static void main(String[] args) {
HashSet<String> a = new HashSet<>();
a.add("Ура!");
a.add("Ура!");
a.add("Ура!");
System.out.println(a.size());
}
}
public class Main {
public static void main(String[] args) {
DynamicSet<String> a = new DynamicSet<>();
a.add("Ура!");
a.add("Ура!");
a.add("Ура!");
System.out.println(a.getSize());
}
}
>>> 1
public class Main {
public static void main(String[] args) {
HashSet<String> a = new HashSet<>();
a.add("Ура!");
a.add("Ура!");
a.add("Ура!");
System.out.println(a.size());
}
}
>>> 1
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
}
}
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
DynamicSet<???> a = new DynamicSet<>();
}
}
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
DynamicSet<Character> a = new DynamicSet<>();
}
}
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
DynamicSet<Character> a = new DynamicSet<>();
for(Character c : text.toCharArray()) {
// ???
}
}
}
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
DynamicSet<Character> a = new DynamicSet<>();
for(Character c : text.toCharArray()) {
a.add(c);
}
}
}
Задача:
Подсчитать сколько уникальных символов в предложении
public class Main {
public static void main(String[] args) {
String text = "мама мыла раму";
DynamicSet<Character> a = new DynamicSet<>();
for(Character c : text.toCharArray()) {
a.add(c);
}
System.out.println(a.getSize());
}
}
ключи все разные
значения могут повторяться
ключ 1
ключ 2
ключ 3
...
значение 1
значение 2
значение 3
...
ключи по X
значения по y
сентябрь
ноябрь
октябрь
декабрь
60
50
40
55
public class DynamicDict {
}
июнь
июль
август
10
20
5
ключи
значения
public class DynamicDict {
DynamicSet<???> keys = new DynamicSet<>();
}
июнь
июль
август
10
20
5
ключи
значения
public class DynamicDict {
DynamicSet<String> keys = new DynamicSet<>();
}
июнь
июль
август
10
20
5
ключи
значения
public class DynamicDict {
DynamicSet<String> keys = new DynamicSet<>();
DynamicSet<Integer> values = new DynamicSet<>();
}
июнь
июль
август
10
20
5
ключи
значения
public class DynamicDict {
DynamicSet<String> keys = new DynamicSet<>();
DynamicSet<Integer> values = new DynamicSet<>();
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict {
DynamicSet<String> keys = new DynamicSet<>();
DynamicArray<Integer> values = new DynamicArray<>();
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<String> keys = new DynamicSet<>();
DynamicArray<Integer> values = new DynamicArray<>();
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(???) {
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(??? key, ??? value) {
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
// ???
}
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
}
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public ??? get(???) {
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
// ???
}
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
return values.at(iKey);
}
}
}
июнь
июль
август
10
20
10
ключи
значения
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void put(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
return values.at(iKey);
}
return null;
}
}
июнь
июль
август
10
20
10
ключи
значения
String text = "мама мыла раму";
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// ???
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.put(c, value + 1);
}
}
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.put(c, value + 1);
}
}
System.out.println(dict);
Задача:
Подсчитать сколько какая буква встречается в предложении
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.set(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.set(c, value + 1);
}
}
System.out.println(dict);
Задача:
Подсчитать сколько какая буква встречается в предложении
м: 4
а: 4
: 2
ы: 1
л: 1
р: 1
у: 1
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.put(c, value + 1);
}
}
System.out.println(dict);
String text = "мама мыла раму";
HashMap<Character, Integer> dict = new HashMap<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.put(c, value + 1);
}
}
System.out.println(dict);
Задача:
Подсчитать сколько какая буква встречается в предложении
м: 4
а: 4
: 2
ы: 1
л: 1
р: 1
у: 1
String text = "мама мыла раму";
DynamicDict<Character, Integer> dict = new DynamicDict<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.set(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.set(c, value + 1);
}
}
System.out.println(dict);
String text = "мама мыла раму";
HashMap<Character, Integer> dict = new HashMap<>();
for(Character c : text.toCharArray()) {
if(dict.get(c) == null) {
// если элемент не найден, то положил по ключу "c" значение 1
dict.put(c, 1);
} else {
// надо увеличить значение ключа на единицу
int value = dict.get(c);
dict.put(c, value + 1);
}
}
System.out.println(dict);
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public ??? Max() {
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
// ???
}
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el > max) {
max = el;
}
}
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el > max) {
max = el;
}
}
return max;
}
}
public class DynamicArray <T> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el > max) {
max = el;
}
}
return max;
}
}
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el > max) {
max = el;
}
}
return max;
}
}
public interface Comparable<T> {
public int compareTo(T other);
}
-1 если this меньше оther
0 если this равен other
1 если this больше other
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el > max) {
max = el;
}
}
return max;
}
}
public interface Comparable<T> {
public int compareTo(T other);
}
-1 если this меньше оther
0 если this равен other
1 если this больше other
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el.compareTo(max) ???) {
max = el;
}
}
return max;
}
}
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el.compareTo(max) == 1) {
max = el;
}
}
return max;
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> array = new DynamicArray<>();
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> array = new DynamicArray<>();
array.add(3);
array.add(2);
array.add(5);
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> array = new DynamicArray<>();
array.add(3);
array.add(2);
array.add(5);
System.out.println(array.Max());
}
}
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(T el : (T[]) data) {
if (el.compareTo(max) == 1) {
max = el;
}
}
return max;
}
}
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(Object obj : data) {
if (el.compareTo(max) == 1) {
max = el;
}
}
return max;
}
}
public class DynamicArray <T extends Comparable> {
public Object[] data = new Object[3];
int size = 0;
public int getSize() { /*...*/ }
public void add(T element) { /* ... */ }
public T at(int index) { /* ... */ }
@Override
public String toString() { /* ... */ }
public T Max() {
T max = (T) data[0];
for(Object obj : data) {
T el = (T) obj;
if (el.compareTo(max) == 1) {
max = el;
}
}
return max;
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> array = new DynamicArray<>();
array.add(3);
array.add(2);
array.add(5);
System.out.println(array.Max());
}
}
public class Main {
public static void main(String[] args) {
DynamicArray<Integer> array = new DynamicArray<>();
array.add(3);
array.add(2);
array.add(5);
System.out.println(array.Max());
}
}
>>> 5
public class DynamicSet<T> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
@Override
public void add(T element) {
if (indexOf(element) == -1) {
super.add(element);
}
}
}
public class DynamicSet<T extends Comparable<T>> extends DynamicArray<T> {
public int indexOf(T value) {
for (int i = 0;i < size; ++i) {
if (data[i].equals(value)) {
return i;
}
}
return -1;
}
@Override
public void add(T element) {
if (indexOf(element) == -1) {
super.add(element);
}
}
}
public class DynamicDict <K, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void set(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
return values.at(iKey);
}
return null;
}
}
public class DynamicDict <K extends Comparable<K>, V> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void set(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
return values.at(iKey);
}
return null;
}
}
public class DynamicDict <K extends Comparable<K>, V extends Comparable<V>> {
DynamicSet<K> keys = new DynamicSet<>();
DynamicArray<V> values = new DynamicArray<>();
// метод который присваивает значение ключу
public void set(K key, V value) {
int iKey = keys.indexOf(key);
if (iKey == -1) {
keys.add(key);
values.add(value);
} else {
values.data[iKey] = value;
}
}
// метод который возвращает значение по ключу
public V get(K key) {
int iKey = keys.indexOf(key);
if (iKey != -1) {
return values.at(iKey);
}
return null;
}
}
/* даны две функции */
public static int CalculateAdd(ArrayList<Integer> list) {
int result = 0;
for (int el : list) {
if (el % 2 == 1) {
result = result + el;
}
}
return result;
}
public static int CalculateSub(ArrayList<Integer> list) {
int result = 0;
for (int el : list) {
if (el % 2 == 0) {
result = result - el;
}
}
return result;
}
попытка вторая
Используя Function и BiFunction сделать из них одну универсальную. С помощью лямбда выражений вызвать новую функцию два раза так,