一、 Collection集合
1.1 数组和集合的区别
package com.xu.test;
import java.util.ArrayList;
import java.util.Arrays;
public class Demo01 {
public static void main(String[] args) {
int[] array1 = {1, 2, 3};
String[] array2 = {"a", "b", "c"};
System.out.println(Arrays.toString(array1));
System.out.println(Arrays.toString(array2));
ArrayList<String> al1 = new ArrayList<>();
al1.add("a");
al1.add("b");
al1.add("c");
System.out.println(al1);
ArrayList<Integer> al2 = new ArrayList<>();
al2.add(1);
al2.add(2);
al2.add(3);
System.out.println(al2);
}
}
1.2 集合类体系结构
1.3 Collection 集合概述和使用
-
Collection集合概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
- JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现
-
创建Collection集合的对象
-
Collection集合常用方法
方法名 | 说明 |
---|
boolean add(E e) | 添加元素 | boolean remove(Object o) | 从集合中移除指定的元素 | boolean removeIf(Object o) | 根据条件进行移除 | void clear() | 清空集合中的元素 | boolean contains(Object o) | 判断集合中是否存在指定的元素 | boolean isEmpty() | 判断集合是否为空 | int size() | 集合的长度,也就是集合中元素的个数 |
package com.xu.test;
import java.util.ArrayList;
import java.util.Collection;
public class Demo02 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
boolean result = collection.add("aaa");
collection.add("aaa");
System.out.println(result);
System.out.println(collection);
collection.add("bbb");
String s = "aaa";
boolean remove = collection.remove(s);
System.out.println(remove);
System.out.println(collection);
collection.add("cccc");
collection.removeIf(
(String ss) -> {
return ss.length() == 3;
}
);
System.out.println(collection);
collection.clear();
System.out.println(collection);
collection.add("cccc");
boolean cccc = collection.contains("cccc");
System.out.println(cccc);
boolean empty = collection.isEmpty();
System.out.println(empty);
collection.add("111");
int size = collection.size();
System.out.println(size);
}
}
1.4 Collection集合的遍历
package com.xu.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo03 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("Hello");
collection.add(" world");
collection.add(" and");
collection.add(" java!");
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
System.out.print(next);
}
}
}
package com.xu.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo03 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("Hello");
collection.add(" world");
collection.add(" and");
collection.add(" java!");
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
if(" java!".equals(next)){
iterator.remove();
}
}
System.out.println(collection);
}
}
1.5 增强for循环
package com.xu.test;
import java.util.ArrayList;
public class Demo04 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
for (String s : list) {
System.out.print(s);
}
}
}
注:
- 数据类型一定是集合或者数组中元素的类型
- s仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
- list就是要遍历的集合或者数组
二、List集合
2.1 List集合的概述和特点
- List集合的概述
- 有序集合,这里的有序指的是存取顺序
- 用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
- 与Set集合不同,列表通常允许重复的元素
- List集合的特点
2.2 List集合的特有方法
方法名 | 描述 |
---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 | E remove(int index) | 删除指定索引处的元素,返回被删除的元素 | E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 | E get(int index) | 返回指定索引处的元素 |
package com.xu.test;
import java.util.ArrayList;
import java.util.List;
public class Demo05 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add(0, "666");
list.add(0, "777");
System.out.println(list);
System.out.println("-----------------");
String remove = list.remove(0);
System.out.println(remove);
System.out.println(list);
System.out.println("-----------------");
String s = list.set(0, "888");
System.out.println(s);
System.out.println(list);
System.out.println("-----------------");
String s1 = list.get(0);
System.out.println(s1);
}
}
三、数据结构(后续展开)
3.1 数据结构之栈和队列
3.2 数据结构之数组和链表
-
数组结构 ? 查询快、增删慢 -
队列结构 ? 查询慢、增删快
四、List集合的实现类
4.1 List集合子类的特点
-
ArrayList集合 ? 底层是数组结构实现,查询快、增删慢 -
LinkedList集合 ? 底层是链表结构实现,查询慢、增删快
4.2 LinkedList集合的特有功能
-
特有方法
方法名 | 说明 |
---|
public void addFirst(E e) | 在该列表开头插入指定的元素 | public void addLast(E e) | 将指定的元素追加到此列表的末尾 | public E getFirst() | 返回此列表中的第一个元素 | public E getLast() | 返回此列表中的最后一个元素 | public E removeFirst() | 从此列表中删除并返回第一个元素 | public E removeLast() | 从此列表中删除并返回最后一个元素 |
-
示例代码
package com.xu.test;
import java.util.LinkedList;
public class Demo06 {
public static void main(String[] args) {
LinkedList<String> ll = new LinkedList<>();
ll.addFirst("222");
ll.addFirst("111");
System.out.println(ll);
System.out.println("-------");
ll.addLast("333");
System.out.println(ll);
System.out.println("-------");
String first = ll.getFirst();
System.out.println(first);
System.out.println("-------");
String last = ll.getLast();
System.out.println(last);
System.out.println("-------");
String s = ll.removeFirst();
System.out.println(s);
System.out.println("-------");
String s1 = ll.removeLast();
System.out.println(s1);
}
}
五、泛型
5.1 泛型概述
5.2 泛型类
5.3 泛型方法
5.4 泛型接口
5.5 类型通配符
六、ArrayList和LinkedList底层原码解析图
|