文章目录
- List
- List集合概述
- Listlterator
- listerator:串列迭代器
- listerator常用方法:
- Arraylist与Linkedlist
- 两者的异同
- ArrayList
- LinkedList集合的特有功能
- Set
- Set集合特点
- 哈希值
- HashSet集合特点
- LinkedHashSet集合
- TreeSet集合
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集合分,所以是不包括重复元素的集合
public class test02 {
public static void main(String[] args) {
HashSet<String> hs= new HashSet<String>();
hs.add("李淳罡");
hs.add("剑九黄");
hs.add("王仙芝");
hs.add("李淳罡");
for(String s:hs){
System.out.println(s);
}
}
}
添加元素的程序:
注:为确保唯一性,需重写hashCode()和heequals()方法
LinkedHashSet集合
概括:
- 继承hashSet类并实作Set界面
- 底层资料结构是哈希表和链表
特点:
- 哈希表和链表实作的Set界面,具有可预测的迭代次序
- 由链表保证元素有序,即元素的储存和取出顺序是一致的
- 由哈希表保证元素唯一,即没有重复的元素
public static void main(String[] args) {
//创建链表
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
//添加资料
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集合,所以不包含重复元素的集合
代码演示:
public static void main(String[] args) {
TreeSet<Integer> treeSet=new TreeSet<>();
treeSet.add(30);
treeSet.add(20);
treeSet.add(40);
treeSet.add(50);
treeSet.add(20);
for(Integer i:treeSet){
System.out.println(i);
}
}
0 评论