第六章 集合

6.1 集合概述
专门用来存储Java对象(实际上是对象的引用,不能存剧本数据类型)
按照存储结构分为两大类:单列集合Collection和双列集合Map
6.2 Collection接口
包含两个重要的子接口:list和set
list接口主要实现类有ArrayList和linkedlist;set接口主要实现类有hashset和treemap.
Collection也是单个集合保存的最大父接口。
6.3list接口
list是有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。List是一个有序的队列,每一个元素都有它的索引。
常用方法:
void add(int index, Object ele)
boolean addAll(int index, Collection eles)
Object get(int index)
int indexOf(Object obj)
int lastIndexOf(Object obj)
Object remove(int index)
Object set(int index, Object ele)
List subList(int fromIndex, int toIndex)
6.3.1 ArrayList集合
ArrayList集合素,因此可以将ArrayList集合看作是一个长度可变的数组。 ArrayList集合中大部分方法都是从Collection和List中继承过来的,其中add()方法和get()方法用于实现元素的读取。 索引的取值是从0开始的,最后一个索引是size-1
6.3.2linkedlist集合 LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首位操作,而LinkedList提供了大量首尾操作的方法。
特有方法:
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast() public E
removeFirst()及public E removeLast()
public E get(int index);
object peek ()
boolean offer(object o)
6.4Collection集合遍历
6.4.1Iterator遍历集合
1)public boolean hasNext(); 判断是否有下一个元素;
2)public E next(); 取得当前元素;
3)public default void remove(); 删除元素
eg:Iterator iterator1 = list.iterator();
6.4.2 foreach遍历集合
foreach循环也称增强for循环,用于遍历数组或集合中的元素。 局限性:foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。
eg:public class Main{
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(“123”);
list.add(“456”);
list.add(“789”);
for (String str : list){
System.out.println(str);
}
}
}
6.5 set接口
Set是一种不包括重复元素的Collection。它维持它自己的内部排序,所以随机访问没有任何意义。需要注意的是:虽然Set中元素没有顺序,但是元素在set中的位置是由该元素的HashCode决定的,其具体位置其实是固定的。
Set接口并没有对Collection接口进行扩充,即没有get()和set()方法。
set接口主要有两个实现类:treeset和hashset
6.2.1Treeset集合
它内部采用平衡二叉树来存储元素,。没有重复的元素,并且可以堆元素进行排序。TreeSet是一个有序集合,其底层是基于TreeMap实现的,非线程安全。
6.5.2HashSet(散列集)
HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序(插入和输出顺序不一样)通过一个HashMap存储元素,元素是存放在HashMap的Key中,而Value统一使用一个Object对象。
6.6 Map接口
public void clear() // 清空Map集合
public Collection values(); // 取出全部的value
public boolean containsKey(Object key); //判断指定的key是否存在
public boolean containsValue(Object value); // 判断指定的value是否存在
Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
6.7泛型
泛型类和泛型接口是任何类,接口都可以通过声明 类名或者接口名时 增加泛型声明,成为泛型类和泛型接口,由于泛型只是编译阶段进行检查,而不是更改源代码,所以不同类型参数的泛型类依然是同一个类,而且静态方法、静态初始化块以及静态变量不能使用参数化类型。
6.8常用工具类
6.8.1arrays工具类
静态方法sort()来实现这个功能,使用这个方法时候将会按照自然顺序堆数据元素进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值