文章目录
List
List集合概述
- 有序集合(也称为序列),用户可以精确控制列表中的每个元素的每一个位置。用户可以通过索引访问并搜索列表中的元素
- 与Set集合不同,列表通常允许有重复的元素
特点
- 有序:存储和取出的顺序一致
- 可重复性:存储的元素可以重复
特有方法
- void add(int index,E element);在此集合中指定位置插入指定的元素
- E remove(int index);删除指定索引的元素,返回被删除的元素
- E set(int index,Eelement);修改指定索引的元素,返回被修改的元素
- E get(int index);返回指定索引的元素
Listlterator
listerator:列表迭代器
- 通过List集合的listIterator()方法得到,所以说它是list集合的迭代器
- 用于允许程序员沿着任意方向遍历列表迭代器,在迭代的期间修改列表,病获得列表中迭代器的当前位置
Iterator<Student> it = list.iterator();while(it.hasNext()){Student s = it.next();System.out.println(s.getName()+","+ s.getAge());}
listerator常用方法:
- E next():返回迭代中的下一个元素
- boolean hasNext();如果迭代具有更多元素则返回ture
- E previous();返回列表中的上一个元素
- boolean hasPrevious();如果此列表迭代器在相反的方向遍历列表时具有更多元素则返回ture
- void add(E e);将特定的元素插入到列表中
Arraylist与Linkedlist
两者的异同
同:Arraylist与Linkedlist都是List的子类具有List的性质
异:
- ArrayList:底层数据结构是数组,具有查询快,增删慢的性质
- LinkedList:底层数据结构是链表,具有查询慢,增删快的性质
ArrayList
作用:
- ArrayList是基于Object[]实现的,所以该只能装引用数据类型,基本数据类型要想装进集合,需要将基本数据类型进行类的包装。
- 包装类中有将String类型转换为对应的基本数据类型的方法。
特点:
- 有序的:按照添加的顺序
- 不唯一:同一个元素可以装多次
构造方法
- ArrayList list = new ArrayList(int 数组空间大小);
- ArrayList list = new ArrayList();//数组默认开辟10块空间
LinkedList集合的特有功能
- public void addFirst(E e);在开头插入指定元素
- public void addLast(E e);将指定的元素追加到此列表的末尾
- public E getFirst();返回列表中的第一个元素
- public E getLast();返回此列表中的最后一个元素
- public E removeFirst();从此列表中删除并返回第一个元素
- public E removeFirst();从列表中删除并返回最后一个元素
Set
Set集合特点
- 不包含重复元素的集合
- 没有带索引的方法,所以不能使用普通的for循环遍历
哈希值
- 哈希值:是JDK根据对象的地址或者字符串或数字算出来的int类型的数值 获取对象的哈希值:返回对象的哈希码值
public int hashCode();
对象的哈希值特点:
- 同一个对象多次调用hashCode()方法返回的哈希值是相同的
- 默认情况下,不同对象的哈希值不同。而重写hashCode方法,可以实现让不同对象的哈希值相同
HashSet集合特点
- 底层数据结构是哈希表
- 对集合的迭代顺序不做任何保证,即存储和取出的元素一致
- 没有带索引的方法,所以不能使用普通的for循环遍历
- 由于是Set集合分,所以是不包括重复元素的集合
publicclass test02 {publicstaticvoidmain(String[] args){HashSet<String> hs=newHashSet<String>();
hs.add("李淳罡");
hs.add("剑九黄");
hs.add("王仙芝");
hs.add("李淳罡");for(String s:hs){System.out.println(s);}}}
添加元素的过程:
注:为确保唯一性,需重写hashCode()和heequals()方法
LinkedHashSet集合
概括:
- 继承hashSet类并实现Set接口
- 底层数据结构是哈希表和链表
特点:
- 哈希表和链表实现的Set接口,具有可预测的迭代次序
- 由链表保证元素有序,即元素的储存和取出顺序是一致的
- 由哈希表保证元素唯一,即没有重复的元素
publicstaticvoidmain(String[] args){//创建链表LinkedHashSet<String> linkedHashSet =newLinkedHashSet<>();//添加数据
linkedHashSet.add("hello");
linkedHashSet.add("java");
linkedHashSet.add("world");
linkedHashSet.add("java");//重复数据不能存储//加强for循环遍历for(String s : linkedHashSet){System.out.println(s);}}
TreeSet集合
概述:
- 位于java.util包下,使用时需要导包
- 间接实现了Set方法
特点:
- 元素有序,是按照一定的规则进行排序,并非是指存储和取出的顺序,具体方法由构造方法决定
- TreeSet();根据其元素的自然排序进行排序
- TreeSet(Comparator comparator);根据指定比较器进行排序
- 没有索引的方法,所以不能使用普通for循环
- 由于实现了Set集合,所以不包含重复元素的集合
代码演示:
publicstaticvoidmain(String[] args){TreeSet<Integer> treeSet=newTreeSet<>();
treeSet.add(30);
treeSet.add(20);
treeSet.add(40);
treeSet.add(50);
treeSet.add(20);for(Integer i:treeSet){System.out.println(i);}}
本文转载自: https://blog.csdn.net/weixin_63736489/article/details/122502229
版权归原作者 清风_yo 所有, 如有侵权,请联系我们删除。
版权归原作者 清风_yo 所有, 如有侵权,请联系我们删除。