List接口特点:
1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储
就是按照11、22、33的顺序完成的)。
2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道
理)。
3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
List接口中常用的方法
List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根
据元素索引来操作集合的特有方法,如下:
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置
上。
public E get(int index) :返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的
更新前的元素。
List接口的子类
1.ArrayList:它数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中
使用最多的功能为查询数据、遍历数据,所以 ArrayList 是最常用的集合。
2.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集。
3.Vector集合数和ArrayList一样底层使用数组结构。元素增删慢,查找快,与ArrayList不同
的是Vector是线程安全的,速度慢,工作中很少使用。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("王五");
list.add("王五");
list.add("王五");
//曾强for循环
for (String s : list) {
System.out.println("s: " + s);
}
System.out.println("----------------");
// public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
list.add(1, "赵六");
System.out.println(list); // [张三, 赵六, 李四, 王五]
// public E get(int index) :返回集合中指定位置的元素。
System.out.println(list.get(0)); // 张三
// public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
list.remove(0);
System.out.println(list); // [赵六, 李四, 王五]
// public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素
list.set(1, "田七");
System.out.println(list); // [赵六, 田七, 王五]
}
Set接口: 与 List 接口不同的是, Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。
Set接口的子类
1.HashSet:是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无
序的(即存取顺序不能保证不一致)。 java.util.HashSet 底层的实现其实是一个
java.util.HashMap 支持.
public class HashSetDemo {
public static void main(String[] args) {
//创建 Set集合
HashSet<String> set = new HashSet<String>();
//添加元素
set.add(new String("cba"));
set.add("abc");
set.add("bac");
set.add("cba");
//遍历
for (String name : set) {
System.out.println(name);
}
}
}
2.LinkedHashSet:为HashSet的子类,是链表和哈希表组合的一个数据存储结构,集合中的元素有序存储。
public class LinkedHashSetDemo {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<String>();
set.add("bbb");
set.add("aaa");
set.add("abc");
set.add("bbc");
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
结果:
bbb
aaa
abc
bbc