黑马程序员——集合(一)

(一)集合的概况

:整个集合的框架主要包括三大接口,分别是Collection、Set、Map

首先来了解Collection接口,该接口有List和Set两个子类接口


Colection向子类提供了不少基本操作方法:

具体有:add(),clear();contains();euuals();hashCode();isEmpty();remove();size();toArray();


1,先来了解List接口

使用List集合的情况:里面的所有内容和元素都可以重复


List接口常用方法:分为增删改查四个

增:add(index, element);add(index,collection);

删:remove(index);remove(index,element);

查:get(index);subList(from,to);listIterator();

改:set(index,element);

在集合中十分重要的一个概念就是迭代器,下面了解迭代器:

迭代器 :其实就是集合中取出元素的方式。在集合中循环调用next(),一次就要hashNext()一次。Iterator,其实也是一个接口(专门用来判断,取出),通过每个集合内部类都符合一个规则,并且都提供一个对外方法iterator();.

特别注意:

在list中的特有迭代器listiterators 是Iterator的子接口,在操作的时候不可以通过集合对象的方法操作集合中的数据,否则会发生ConcurrentModificationException异常,所以在迭代只能用Iterator操作,但是Iterator操作方法有限,只可以对元素进行判断,取出,删除操作。如果想继续添加或者修改等等操作,就要用到其子类接口listIterator操作,实例代码如下:

import java.util.*;
class  ListDemo
{
public static void main(String[] args) 
{
ArrayList al=new ArrayList();
       //添加元素
al.add("java1");
al.add("java2");
al.add("java3");
ListIterator li= al.listIterator() ;
while(li.hasNext())
{
  Object obj = li.next();
  if(obj.equals("java3"))
 // li.add("java20");
  li.set("java66");  
}
       sop(al);

public static void sop(Object obj)
{
System.out.println(obj);
}
}


更清晰的来分析List接口,里面包括Arrylist,Vectory,Linkedlist

三者之间的区别:

Arrylist:底层为数组结构,查阅快(不同步),但是增删慢

Vectory:底层是数组数据结构,特点是,用于线程同步,增删查询操作都慢。而且枚举是其特有的取出方式,实例代码如下:

import java.util.*;
class  VectorDemo
{
public static void main(String[] args)  throws Exception
{
Vector v=new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en =v.elements();
while(en.hasMoreElements())
{
  System.out.println(en.nextElement());}
}
}


Linkedlist:底层为链表数据结构,增删快,查询慢,具有自己的特殊方法添加获取查询方法。


2.Set接口

Set集合中的元素在村如何取出的时候是无序的,具有唯一性,即元素不可以重复。

Set是Collection 的子接口,所以其功能和父类保持一致。

Set常见的子类主要有:HashSet,TreeSet


我们先来了HashSet:

注意:HashSet是如何保证元素的唯一性??

深入分析:是通过元素的两个方法确定是的,hashCode(),和equals()完成,

如果元素的HashCode();值相同就会去判断equals()是否为true,

如果元素的HashCode()值不同,就不会去调用equals();

可以理解为在数据操作的时候,有以下动作,首选比较HashCode值,不同,做出相应处理,相同也作出相应处理。


HashSet与ArrayList的区别:HashSet的删除操作依赖哈希值和equals(),但是ArrayList的删除元素只依赖equals()



自我学习心得:这部分集合的学习让我对数据和对象的操作上升到集合的概念,从整体框架中我看到对象的操作的更多的方式,比学习集合以前要方便的多。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值