java基础之集合

  • 为什么会出现集合类:
    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
  • 数组和集合类同是容器,有什么不同:
    数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。
    数组中可以存储基本数据类型,集合只能存储对象。

    • 集合类的特点:
      集合只用于存储对象
      集合长度是可变的
      集合可以存储不同类型的对象。

集合容器因为内部的数据结构不同,有多种具体容器。
不断的向上抽取,就形成了集合框架。

框架的顶层Collection接口:
Collection的常见方法:
1.添加:
boolean add(Object obj);
boolean addAll(Collection coll);
2.删除:
boolean remove(Object obj);
boolean removeAll(Collection coll);
void clear();
3.判断:
boolean contains(Object obj);
boolean containsAll(Collection coll);
boolean isEmpty();判断是否有元素。
4.获取:
int size();
Iterator iterator();//迭代器,专门用于取出集合中的元素。
5.其他:
boolean retainAll(Collection coll);取交集。
Object[] toArray();将集合转为数组。

Collection接口有两个子接口:
List(列表) , Set(集)
List:可存放重复元素,元素存取是有序的。元素都有索引(角标)
Set:不可以存放重复元素,元素存取是无序
的。

List特有的常见方法:有一个共性的特征就是可以操作角标
1.添加:
void add(index,element);
void add(index,collection);
2.删除:
Object remove(index);
3.修改:
Object set(index,element);
4.获取:
Object get(index);
int indexOf(object);
int lastIndexOf(object);
List subList(from,to);

List接口中常用类:
Vector:线程安全,但速度慢,已被
ArrayList替代。
 ArrayList:线程不安全,查询速度快。
 LinkedList:链表结构,增删速度快。
取出LIst集合中元素的方式:
• get(int index):通过脚标获取元素。
• iterator():通过迭代方法获取迭代器对象。

迭代:
迭代是取出集合中元素的一种方式。
 因为Collection中有iterator方法,所以每一个
子类集合对象都具备迭代器。
 用法:
Iterator iter = l.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
for(Iterator iter = iterator();iter.hasNext(); )
{
System.out.println(iter.next());
}

迭代的注意事项:
迭代器在Collcection接口中是通用的,它替
代了Vector类中的Enumeration(枚举)。
 迭代器的next方法是自动向下取元素,要避
免出现NoSuchElementException。
 迭代器的next方法返回值类型是Object,所
以要记得类型转换。
思考:为什么next方法的返回类型是Object的
呢?

set接口中常用的类:
HashSet:线程不安全,存取速度快。
它是如何保证元素唯一性的呢?
 TreeSet: 线程不安全,可以对Set集合中的
元素进行排序。
它的排序是如何进行的呢?

Set集合元素唯一性原因
 HashSet:通过equals方法和hashCode
方法来保证元素的唯一性。
 TreeSet:通过compareTo或者compare
方法中的来保证元素的唯一
性。元素是以二叉树的形式存
放的。

Map与Collection
 Map与Collection在集合框架中属并列存在
 Map存储的是键值对
 Map存储元素使用put方法, Collection使用
add方法
 Map集合没有直接取出元素的方法,而是
先转成Set集合,在通过迭代获取元素
 Map集合中键要保证唯一性

Map集合常用类
 Hashtable:线程安全,速度慢,不允许存放
null键, null值,已被HashMap替代。
 HashMap:线程不安全,速度快,允许存放null
键, null值。
 TreeMap:对键进行排序,排序原理与TreeSet
相同。
例程
练习:自定义一个可以同时存放三元素的Map集
合。

集合框架中的工具类
 Collections
• 对集合进行查找
• 取出集合中的最大值,最小值
• 对List集合进行排序
• ……
 Arrays
• 将数组转成List集合
• 对数组进行排序
• 对数组进行二分查找

新增for语句
 Collection在JDK1.5后出现的父接口
Iterable就是提供了这个for语句。
 格式:
for(数据类型 变量名 : 数组或集合)
{
执行语句;
}
 简化了对数组,集合的遍历。

函数的另一种表现形式
 返回值类型 函数名(参数类型… 形式参数)
{
执行语句;
}
 其实接收的是一个数组,可以指定实际参数
个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘟哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值