list系列集合:
特点:
特有方法:
示例代码:
import java.util.List;
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);//[aaa, bbb, ccc]
list.add(1,"ddd");
//1为想要插入的索引位置。
//原来索引上的元素后移
System.out.println(list);//[aaa, ddd, bbb, ccc]
list.remove(1);
System.out.println(list);//[aaa, bbb, ccc]
}
}
list集合的五种遍历方式:
迭代器遍历:能删除元素
增强for遍历
Lambda表达式遍历
普通for循环遍历
列表迭代器遍历:能添加元素(list集合系列独有)
示例代码:
import java.util.*;
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String str = it.next();
if (str.equals("bbb")) {
it.add("qqq");
}
}
System.out.println(list);
}
}
Arraylist集合:
右移运算符:
泛型类:
检查数据类型。
Integer类型不能强转为String类型。
泛型的继承和通配符:
泛型不具备继承性,但数据具有继承性。
泛型内写什么类型,就只能传递什么类型的数据值。
泛型的通配符:?就是一个问号。
洛谷p1223排队接水
源码:
#include <stdio.h>
typedef struct {
int time;
int index;
} Person;
void bubbleSort(Person arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j].time > arr[j + 1].time) {
Person temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int n;
scanf("%d", &n);
Person people[n];
for (int i = 0; i < n; i++) {
scanf("%d", &people[i].time);
people[i].index = i + 1;
}
bubbleSort(people, n);
for (int i = 0; i < n; i++) {
printf("%d", people[i].index);
if (i != n - 1) {
printf(" ");
}
}
printf("\n");
double total_wait_time = 0;
double current_time = 0;
for (int i = 0; i < n; i++) {
total_wait_time += current_time;
current_time += people[i].time;
}
double average_wait_time = total_wait_time / n;
printf("%.2f\n", average_wait_time);
return 0;
}