黑马程序员----集合框架的的基本操作

本文深入探讨Java集合框架中的ArrayList、LinkedList、HashSet和TreeSet,从数据结构、操作方法、实现原理等方面进行全面解析,帮助开发者深入了解Java集合的应用与实现。

                                                          第一部分:基础知识

 

Collection

Listarraylist linkedlist vector

Sethashset treeset

 

Arraylist底层数据结构为数组,在元素较多时候查询快速,删除添加动作慢

linkedlistt底层数据结构为链表,在元素较多时候查询较慢,删除添加动作快

 

集合框架:为什么会出现那么多的容器呢?

因为每一个容器对数据的存储方式不同,这个存储方式叫数据结构

 

什么是迭代器:

其实就是集合的取出元素的方式

 

List 元素是有序的 并且可以重复 因为该集合体系有索引

Set 元素无序 并且没有索引

 

List 凡是可以操作角标的都是list专有方法

增添

add(index,element)

addAll(index,collection)

删除

remove(index)

修改

set(index,element)

查找

get(index)

sublist(from,to)

 

除此之外,当用集合和迭代器两种方法操作同一组元素时候,会引起并发操作异常 Iterator的子接口listIterator可以避免这以问题,

listIterator实现的方法比父类多,如果判断取出删处以外的操作,需要用listIterator迭代器

 

Linkedlist特有方法:

addFirst();  //头部插入元素

addLast() ; //尾部插入元素

getFirst();//头部取出元素,长度不变

getLast();//尾部取出元素,长度不变

removeFist() ;//头部移除元素,长度改变

removeLast();//尾部移除元素,长度改变

 

 

set:元素无序(存入和取出的顺序不一样),元素不可以重复

         hashset底层数据结构为哈希表,线程是同步的,

         存入数据时候 先检测哈希值是否一样(通过hashCode()方法返回地址比较) 如果一样 则比较对象是否一样(通过equal()方法比较)

         equal方法可以通过自己的需要改写

        Treeset底层数据结构是哈希表 可以对元素排序

   

 

代码实现:

 

import java.util.*;

 

/*1.add方法中存放的是类型是Object类,以便于接受任意类型对象

*2.集合存储的都是对象的引用

*/

class Collection

{

        public static void method()

         {

                    ArrayList a = new ArrayList();

               //添加元素

                    a.add(1,"java1");

                    a.add(2,"java2");

                    a.add(3,"java3");

                    a.add(4,"java4");

               //取出元素

                   Iterator t = a.iterator();

              while(t.hasNext())

                  {

                          sop(t.next());

                   }

             //删除元素 在角标为2 处删除元素

                  a.remove(2);

             //修改元素 在角标为3 的位置修改

                 a.set(3, "andorid");

              //查找元素 查询角标为3 的位置的元素

                  sop(a.get(3));

             //获取所有元素

             while(t.hasNext())

                 {

                         sop(t.next());

                 }

             //通过indexOf获取对象的位置

                 sop(a.indexOf("java01"));//打印java01角标

                 List sub = a.subList(1,2);//获取子窜

                sop(sub); //打印子串

               }

           public static void main(String[] args)

               {

                      method();

               }

           public static void sop(Object obj)

              {

                      System.out.println(obj);

              }

}

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值