3-й семестр / Лекции / 7 - Презентация 2
.pdfЦентр дистанционного обучения
Лекция 7 Программирование на
Java
ФИО преподавателя: Зорина Наталья Валентиновна e-mail: zorina@mirea.ru,zorina_n@mail.ru
Online-edu.mirea.ru
online.mirea.ru
Центр дистанционного обучения
Collections Framework
public interface List<E> {
int size();
E get(int index); // 0 <= index < size()
boolean add(E element); // в конец списка, возвращает true
void clear(); boolean isEmpty();
...
} |
|
|
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
size=5 |
||
|
|||||||
|
|
|
|
|
|
||
|
“A” |
“B” |
“A” |
“D” |
“C” |
||
|
|
||||||
|
|
|
|
|
|
|
online.mirea.ru
Центр дистанционного обучения
Collections Framework
public interface List<E> {
// Возвращает предыдущее значение:
E set(int index, E element); // должно быть: 0 <= index < size()
// Вставляет элемент на место index:
void add(int index, E element); // 0 <= index <= size()
// Возвращает удаленный элемент
E remove(int index); // 0 <= index < size()
...
}
0 |
1 |
2 |
3 |
4 |
size=5 |
|
|
|
|
|
|
||
“A” |
“B” |
“A” |
“D” |
“C” |
||
|
||||||
|
|
|
|
|
|
online.mirea.ru
Центр дистанционного обучения
Collections Framework
public interface List<E> {
boolean contains(Object o);
int indexOf(Object o); // -1, если не найден int lastIndexOf(Object o); // -1, если не найден
// Удаляет только первый найденный объект: boolean remove(Object o); // true, если был удален
...
}
Для поиска используется метод Object.equals(Object). Эти методы принимают Object, а не E из-за сохранения
совместимости со старыми версиями Java.
online.mirea.ru
Центр дистанционного обучения
Collections Framework
int indexOf(Object o) {
for (int i = 0; i < size(); i++) { if (o.equals(get(i))
return i;
}
return -1;
}
online.mirea.ru
Центр дистанционного обучения
Collections Framework
List<String> list = new ArrayList<>();
list.add(“A”); list.add(“B”); list.add(“B”);
list.add(“A”);
int i1 = list.indexOf(“B”); // 1 int i2 = list.lastIndexOf(“B”); // 2
0 |
1 |
2 |
3 |
|
|
|
|
“A” |
“B” |
“B” |
“A” |
|
|
|
|
online.mirea.ru
Центр дистанционного обучения
Collections Framework
public class MyString {
private final String str;
public MyString(String str) { this.str = str; }
}
List<MyString> list = new ArrayList<>(); list.add(new MyString(“A”)); list.add(new MyString(“B”));
int i1 = list.indexOf(new MyString(“B”));
0 1
“A” “B”
online.mirea.ru
Центр дистанционного обучения
Collections Framework
List<MyString> list = new ArrayList<>(); list.add(new MyString(“A”));
list.add(new MyString(“B”)); |
|
0 |
1 |
|
|
|
|
|
“A” |
“B” |
|
int i1 = list.indexOf(new MyString(“B”)); |
|
||
|
|
|
|
|
|
|
|
// i1 = -1 |
|
|
|
new MyString(“B”).equals(new MyString(“B”)); |
|
|
|
// false |
|
|
equals по умолчанию сравнивает так же, как ==
online.mirea.ru
Центр дистанционного обучения
Collections Framework
public class MyString {
private final String str;
public MyString(String str) { this.str = str; }
@Override
public boolean equals(Object o) { if (o instanceof MyString) {
MyString that = (MyString) o;
return this.str.equals(that.str);
} else {
return false;
}
}
}
online.mirea.ru
Центр дистанционного обучения
Collections Framework
List<MyString> list = new ArrayList<>();
list.add(new MyString(“A”)); list.add(new MyString(“B”));
int i1 = list.indexOf(new MyString(“B”));
// i1 = 1: сравнение MyString по значению
0 1
“A” “B”
online.mirea.ru