新手上路之容器ArrayList遍历总结 笔记

                      **ArrayList遍历**

容器概念

  之前学的数组(优缺点)是有限个类型相同的变量的集合,是一种简单的线性队列,可在其中存放基本数据类型或对象...,可看成是容器.
  虽然它的效率高,比如查找,但是数组的长度一旦定下来,就不可更改了,就不能随着数据的添加而动态增加长度,不可避免会超出长度报空指针异常.
  我们的需求: 1. 灵活 2. 随时扩容装载对象, 容器正是我们想要的,容器的底层是利用数组实现的,其作用:也就有类似数组的特性,必须是引用类型或对象(JavaBean...)相同的变量的集合(存储相同特征的多个数据).

API方法摘要

 需要用到的类: java.util 
                         类 ArrayList<E>
 方法摘要
       boolean add(E e) 
      将指定的元素添加到此列表的尾部。 

       void add(int index, E element) 
      将指定的元素插入此列表中的指定位置。 

      E get(int index) 
      返回此列表中指定位置上的元素。 

      E set(int index, E element) 
      用指定的元素替代此列表中指定位置上的元素。 

代码一刻

引用类型的使用姿势

public class ListTry {

    public static void main(String[] args) {
        // ArrayList可以是泛型
        // 里面存储的相同类型的数据 类似数组的概念
        // 底层是数组实现的
        List<String> list = new ArrayList<String>();

        // 有序添加 可重复
        list.add("徐凤年");
        list.add("徐凤年");
        list.add("徐凤年");
        list.add("徐巧");
        list.add("徐胭脂");
        list.add("徐龙象");
        list.add("白素");

        // 使用迭代器,推荐,都是独立的
        // 好比,每次上车投币,司机只管开车相关的操作,不关心其他的
        // 投币的事交给专门的售票员维护
/*      Iterator it = list.iterator();

        //建议使用while 看上去简单明了
        while(it.hasNext()){
            String ele = (String) it.next();
            System.out.println(ele);
        }*/

        // for循环 + get
/*      for (int i = 0; i < list.size(); i++) {
            String ele = list.get(i);
            System.out.println(ele);
        }*/

        list.remove(2);
        list.set(2, "徐小乐");
        // foreach实现遍历
        // 其底层使用的也是利用迭代器实现的
        for(String list2 : list){
            System.out.println(list2);
        }

        System.out.println("-----------------");
        // 得到下标为0的值
        System.out.println(list.get(0));

        // 得到其值的大小
        System.out.println(list.size());

    }

代码结果如下:
徐凤年
徐凤年
徐小乐
徐胭脂
徐龙象
白素
- - - - - - - - - - - - - - - - -
徐凤年
6

对象(JavaBean)使用姿势

     先定义一个MyList的类(MyList):
    // javaBean
    public class MyList {
       private Integer id;
       private String userName;


         // 有参的构造是我们偷懒助手
           public MyList(Integer id, String userName) {
            super();
            this.id = id;
            this.userName = userName;
           }
            public MyList() {
                super();
                // TODO Auto-generated constructor stub
            }
        public Integer getId() {
                return id;
            }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }



    }

在定义一个ListTry1 类进行测试:

public class ListTry1 {
    public static void main(String[] args) {
        List<MyList> list = new ArrayList<>();      
        // 如果是一次性消费的话,匿名更适合我们
        //MyList myList = new MyList();
        list.add(new MyList(1,"徐凤年"));
        list.add(new MyList(2, "王者"));
        list.add(new MyList(3, "唔明"));      
        // 对其进行遍历
        // 利用迭代器进行实现
/*      Iterator<MyList> lt = list.iterator();  
        while (lt.hasNext()) {
            MyList myList = lt.next();
            System.out.println(myList.getId() + "<---------->" + myList.getUserName());
        }*/     
        // 利用for + get 
/*      for (int i = 0; i < list.size(); i++) {
            MyList myList = list.get(i);
            System.out.println(myList.getId() + "<------>" + myList.getUserName());

        }*/
        list.remove(1);
        list.set(1, new MyList(4, "亏了没"));
        // 利用foreach 遍历 javaBean
        for(MyList lMyList: list){
            System.out.println(lMyList.getId() + "<------->" + lMyList.getUserName());
        }

    }
}

结果如下:
1<——->徐凤年
4<——->亏了没

题外话(总结)

     ArrayList: 集中统一处理多个对象 ,底层:数组
        增: add(E) add(int,E)
        遍历: 迭代器 、for+get(索引)  foreach
        删:remove(int) remove(E)
        改:set(int,E)
        查:size() get(int)
        有不足之处,请路过的大牛多多指教.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值