今日学习内容:
List、Set、、可变参数、Collections
List
1.隶属于Collection接口,因此可以使用该接口的方法,特点是储存的内容为有序的,可重复的
2.有两个常用的实现类特色分别是
ArrayList:读取快,增删慢
LinkedList:读取慢,增删快
3.List常用方法
public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
public E get(int index):返回集合中指定位置的元素。
public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
4.LinkedList特有方法
public void addFirst(E e):将指定元素插入此列表的开头。
public void addLast(E e):将指定元素添加到此列表的结尾。
public void push(E e):将元素推入此列表所表示的堆栈。
public E getFirst():返回此列表的第一个元素。
public E getLast():返回此列表的最后一个元素。
public E removeFirst():移除并返回此列表的第一个元素。
public E removeLast():移除并返回此列表的最后一个元素。
public E pop():从此列表所表示的堆栈处弹出一个元素。
public boolean isEmpty():如果列表不包含元素,则返回true。
Set
1.同样隶属于Collection,特点是储存的元素是无序的,不可重复,且无法索引
2.拥有两个常用实现类
HashSet:底层是哈希表+(红黑树)实现的,无法索引,不可重复,无序,查询速度快
LinkedHashSet:底层相较于HashSet多了一层链表结构,因此是有序的,其他方面无变化
3.如果需要储存自定义类的元素,必须重写hashCode和equals方法,因为系统判断两个元素是否重复是靠这两个方法的
可变参数
1.可以使方法更加灵活,可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数
2.使用前提是当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数.
也可以将数据类型设置为Object,就可以应对大部分情况
Collections
1.java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。(被排序的集合里边存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序的规则)
public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。(o1-o2:升序,反之为降序)
练习
List
Set、Collections尝试
可变参数