collection集合

collection

单列集合的顶级父接口,他的功能是全部单列集合都可以继承使用的

注意collection是一个接口,我们不能直接创建他的对象,所以在学习时我们只能创建他实现类到对象

实现类* ArrayList

常见方法:

public boolean add(E e) 把元素e添加到集合E里面

​ //add有返回类型,为boolean类型,list类型一定返回true,set若添加数据之前不存在则返回true,表示添加成功,若 已经存在则返回false

public void clear() 清空集合中所有的元素

public boolean remove(E,e)把集合E中的元素e删去

​ //注意collection里面的方法在set依然会使用所以不可以根据索引删除,只能传递对象进行删除

​ //方法会有一个boolean返回值,若元素不存在则删除失败,返回false

public boolean contains(Object obj) 判断当前集合中是否包含给定的对象

​ //底层是依靠Object中的equal判断的,所以自定义对象需要在,Javabean类重写方法,如果不重写他会比较地址值

public boolean isEmpty() 判断当前集合是否为空

public int size() 返回集合中元素的个数/集合的长度

collection的遍历方式

迭代器遍历

迭代器不依靠索引

迭代器是在java中的类是Iterator,迭代器是集合专用的遍历方式

collection集合获取迭代器

​ Interator iterator () 返回迭代器对象,默认指向当前集合0索引

Iterator中的常用方法

​ boolean hasNext() 判断当前位置是否有元素,有元素返回true ,没有元素则返回false

​ E next( ) 获取当前位置元素,并将迭代器移向下一个位置

interator<String>  it =list.iterator();//获取迭代器对象
while(it.hasNext()){//判断该位置是否为空
    String str =it.next;//取出该位置并且将指针向后移动
    System.out,println(str);
}
   Collection<String> it= new ArrayList<>();//创建一个集合对象
        it.add("iyovugl;ik1");//添加元素
        it.add("iyovugl;ik2");
        it.add("iyovugl;ik3");
        it.add("iyovugl;ik4");
        it.add("iyovugl;ik5");
        it.add("iyovugl;ik6");
        Iterator<String>  in= it.iterator();//创建构造器对象
        while(in.hasNext())//判断指针指向是否为空
        {
            String te = in.next();//得到指针指向对象并移动指针
            System.out.println(te);
        }

1.迭代器遍历完毕,指针不会复位

2.循环中只能用一次next方法 (核心是因为,while判断一次,若循环调用俩次则可能导致有空指针进行输出导致空指针异常)

3.迭代器遍历时,不能使用集合的方法进行增加或删除(需要进行删除可以使用迭代器的remove方法 ,进行删除,无法进行添加)

增强for遍历

增强for的底层就是迭代器,为了简化迭代器代码书写

所以单列集合和数组才可以用增强for进行遍历

格式:

​ for(元素的数据类型 变量名 : 数组或集合)

{

}

forString  s: list)

{
  System.out.println(s);
}

idea 可以利用快捷键快速构造,list.for+回车

  • s是一个中间变量用来记录集合元素,改变s不会改变集合元素
利用lambda表达式遍历

底层也会自己遍历每一个元素,以此得到每一个元素,传递给下面的accept方法

   coll.forEach(new Consumer<String>() {
            @Override
            //s依次是集合的每一个元素
            public void accept(String s) {
                System.out.println(s);
            }
        });

上面是利用匿名内部类书写的下面将利用lambda表达式进行书写

  coll.forEach((String s)->{
            System.out.println(s);
        }
        );

List集合

Collection的方法list都继承了

List集合因为有索引,所以多了许多索引操作的方法

方法

void add (int index ,E element) 在该集合指定位置添加指定的元素,原位置元素后移

E remove(int index) 删除指定索引处的元素,返回被删除的元素

E set (int index ,E element) 修改指定位置处的元素,返回被修改的元素

E get (int index) 返回指定索引处的元素

List集合的遍历方法

迭代器遍历

  Iterator<String> it = coll.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }

列表迭代器遍历(迭代器的子接口)

在遍历时可以添加元素

  ListIterator<String> it = coll.ListIterator();
        while(it.hasNext())
        {
            String str = it.next();
            if"bbb".equal(str)
            {
                it.add("qqq");//将qqq添加到集合中
			}
            System.out.println(str;
        }

增强for遍历

 for (String s : coll) {
            System.out.println(s);
        }

lambda表达式遍历

 coll.forEach((String s)->
        {
            System.out.println(s);
        });

普通for循环遍历(Lish集合存在索引)

 for(int i=0;i<coll.size();i++)
        {
            System.out.println(coll.get(i));

        }

Arraylist集合

  • ArrayList集合底层原理

  • ArrayList底层是数组结构的

  • ArrayList集合底层原理

  • 1利用空参创建的集合,在底层创建一个默认长度为0的数组
    2添加第一个元素时,底层会创建一个新的长度为10的数组
    ③存满时,会扩容1.5倍
    ④如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准

1.创建集合对象

public class pta{
    public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<String>();
    }
}

//泛型:限定集合中储存数据类型对象即

//基本数据类型运用类除了char和int 外其他为首字母大写如:short->Short,long->Long

//char 为Character,int 为integer

输出时会打印集合中的储存内容而不是地址

输出时会自带[ ]包裹

Arraylist方法

添加元素

list.add("aaa");//返回值布尔类型,返回值恒为true

删除元素

list.remove("aaa");//返回值布尔类型,存在为true,不存在为false;
String a=list.remove(0);//删除0索引对应元素并返回该元素,此时a对应aaa

修改元素

String a=list.set(0,"bbb");//将元素"bbb",覆盖到1索引指向位置,原元素被覆盖 ,返回被覆盖元素此时a对应aaa

查询元素

String a=list.get(0);//返回索引0对应元素 

获取元素长度

int a=list.size();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值