集合笔记
1.ArrayList集合
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
ArrayList<E>:
可调整大小的数组实现
<E>:是一种特殊的数据类型,泛型。
//ArrayList集合常用方法 //public boolean remove(Object o) 删除指定元素,返回删除是否成功 //public E remove(int index) 删除指定索引处的元素,返回被删除的元素 //public E set(int indes,E element) 修改指定所引出的元素,返回被修改的元素 //public E get(int index) 返回指定所引处的元素 //publi int size() 返回集合中的元素的个数
2.Collection集合概述和使用
Collection集合概述和使用
-
是单列集合的顶层接口,它表示一组对象,这些对象也称之为Collection元素
-
JDK不提供此接口的任何直接实现,它提供更具体的子接口(Ser和list)实现
创建Collectioin集合的对象
-
多态的方式
-
具体实现类ArrayList
//Collection集合常用方法 //boolean add(E e) 添加元素 //boolena remove(Object o) 从集合中移除指定元素 //void clear() 清空集合中的元素 //boolean contains(Object o) 判断集合中是否存在指定元素 //boolean isEmpty() 判断集合是否为空 //int size() 判断集合长度,也就是集合元素的个数
3.List集合概述和特点
List集合概述
-
有序集合(也成为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数访问元素,并搜索列表中的元素
-
与Set集合不同,列表通常允许重复元素
-
list集合重写了toString方法
List集合特点
-
有序:存储和取出的元素一至
-
可重复:存储元素可重复
//List集合特有方法 //public void add(int index,E elenment) 在此集合中指定位置插入指定元素 //public E remove(int index) 删除指定索引处的元素,返回被删除的元素 //public E set(int indes,E element) 修改指定所引出的元素,返回被修改的元素 //public E get(int index) 返回指定所引处的元素
并发修改异常
public static void main(String[] args){ List<String> array = new ArrayList<String>(); array.add("hello"); array.add("world"); array.add("javaee"); //创建迭代器 Itertor<String> it = list.itertor(); //判断迭代器是否还有元素时 while(it.hasNext()){ //获取元素,迭代器后移 String s = it.next(); //判断字符串是否相等 if(s.equals("world")){ list.add("javaee");//“出错”因为迭代器中的add方法预期修改值和实际修改值不相等 } } System.out.println(list); }
ListIterator
ListIterator:列表迭代器
-
通过List集合的listItertor()方法得到,所以说他是List集合特有的迭代器
-
用于允许程序员沿任意方向列表的列表迭代器,在迭代期间修改列表,并获取列表迭代器的当前位置
ListIterator中的常用方法
-
E next() :返回迭代器中的下一个元素(获取当前元素,指针后退一位)
-
boolean hasNext():如果迭代器有更多元素,则返回true
-
E previous():返回列表中的上一元素(同上反)
-
boolean hasPrevious():如果此迭代器在相反方向遍历列表时有更多元素,则返回TRUE
-
void add(E e):将指定元素插入列表
List集合子类特点
List集合常用子类:ArrayList,LinkedList
-
ArrayList:底层数据结构是数组,查询快,增删慢
-
LinkedList:底层数据结构是列表,查询慢,增删快
//public void addFrist(E e) 在该列表头插入指定元素 //public void addList(E e) 将指定元素追加此列表的末尾 //publi E getFrist() 返回此列表中的第一个元素 //publi E getList() 返回此列表中的最后一个元素 //publi E removeFrist() 从此列表中删除并返回第一个元素 //publi E removeList() 从此列表中删除并返回最后一个元素
4.Set集合概述和特点
Set集合特点
-
不包含重复元素的集合
-
没有带索引方法,所以不能使用普通for循环遍历
哈希值
哈希值:是JDK根据对象地址或者字符串或者数字算出来的int类型的数值
Object类中有一个方法方法可以获得对象的哈希值
-
publi int hashCode():返回对象的哈希值
对象的哈希值特点
-
同一个对象多次调用hasCode()方法返回的哈希值是相同的
-
默认情况下,不同对象的哈希值是不同的。而重写hasCode()方法,可以实现让不同对象的哈希值相同
HashSet集合概述和特点
HashSet集合特点
-
底层数据是哈希表
-
对集合的迭代顺序不作任何保证,也就是做不保证存储和取出的元素顺序一致
-
没有带索引的方法,所以不能使用普通for循环遍历
-
由于是Set集合所以不能包含重复元素
要保证元素唯一性,需要重写hashCode()和equals()
LinkedHashSet集合概述和特点
LinkedHashSet集合特点
-
由哈希表和链表实现的Set接口,具有可预测的迭代次序
-
由链表保证元素的有序,也就是所元素的存储和取出顺序是一致的
-
由哈希表保证链表唯一,也就是说没有重复的元素
TreeSet集合概述和特点
TreeSet集合特点
-
元素有序,这里的顺序不是指存储和取出的顺序,而是安一定的规则进行排序,具体的排序方式取决于构造方法
TreeSet():根据元素自然排序进行排序
TreeSet(Comparator comparator):更具指定的比较器进行排序
-
没有带索引方法,所以不能使用普通for循环遍历
-
由于是Set集合所以比包含重复元素
-
自然排序Comparable的使用
-
用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
-
自然排序,就是让元素所属的类实现Compareble接口,重写comparaTo(T o)方法
-
重写方法时,一定要注意排序规则必须按要求的主要条件和次要条件来写
package paixu; import java.util.Comparator; public class Student implements Comparable<Student>s{ private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Student o) { //this为第二个值 o为第一个值 //当返回值为0的时候表示相同值,当表示为大于1的时候为升序,当表示小于1的时候为降序 int sun = this.age-o.age; int sun1= sun!=0?this.name.compareTo(o.name):sun; return sun1; } }
5.Map结合概述和使用
Map集合概述
-
Interface Map<K,V> K:键的类型 V:值的类型
-
讲键映射到值的对象;不能包含重复的键;每一个键可以映射到多个值
-
举例:学生的学号和姓名
学号 姓名
202103110243 刘毅强
202103110220 班长
创建Map集合的对象
-
多态的方式
-
具体的实现类HashMap
public static void main(String[] args){ Map<String,String> map = new HashMap<String,String>(); }
Map集合的基本功能
//V put(K key,V value) 添加元素 //V remove(Object key) 更具键删除对应元素 //void clear() 删除所有键值对元素 //boolean contaionsKey(Object key) 判断集合是否包含指定键 //boolean contaionsValue(Object value) 判断集合是否包含指定值 //boolean isEmpty() 判断集合是否为控 //int size() 集合长度,也就是集合中键值对的个数
Map集合获取功能
// V get(Object key) 根据键获取值 //Set<K> keySet() 获取所有键的集合 //Collection<V> values() 获取所有值的集合 //Set<Map.Entry<K,V>> entrySet() 获取所有键值对对象的集合
Collections概述和使用
Collections类的概述
-
是针对集合操作的工具
Collections类的常用方法
-
public static <T extends Comparable<?super V >> void sort(List<T> list)
-
public static void reverse(List<?>list):反转元素中的元素顺序
-
public static void shuffle(List<?>list):使用默认的随机源随机排列指定列表