List继承Collection

package com.newedu.jb.day17.collection;

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

 

/**

 * 集合接口List:

 * 特点:

 * 1:有序集合(有序列表),存取有序

 * 2:允许重复元素

 * 3:允许有null存在,并且可以有多个null值存在。

 *

 *List接口 继承自 Collection接口,List接口就自然的包含了Collection接口中的所有方法(约定)

 *

 * 举例说明:

 *  字符串类型的遍历

 *  自定义类型的遍历

 *@author jerry

 *

 */

public class ListDemo {

 

       publicstatic void main(String[] args) {

 

              //第一步:创建集合对象

              Listlist = new ArrayList();

             

              //第二步:创建集合元素

              Stringstr1 = "jerry";

              Stringstr2 = "susan";

              Stringstr3 = "peter";

              Stringstr4 = "jerry";//重复元素

              Stringstr5 = null;//允许为空

              Stringstr6 = null;//允许为空

             

             

             

              //第三步:向集合中添加元素

             

              list.add(str2);

              list.add(str1);

              list.add(str3);

              list.add(str4);

              list.add(str5);

              list.add(str6);

              //第四步:遍历集合

              Iteratoriter = list.iterator();

             

              while(iter.hasNext()){

                     System.out.println(iter.next());

              }

             

              System.out.println("================");

             

              //list遍历自定义对象 Student

             

              Listlist1 = new ArrayList();

             

              Studentstu1 = new Student("jerry",20);

              Studentstu2 = new Student("susan",19);

              Studentstu3 = new Student("peter",21);

              Studentstu4 = null;

             

             

              list1.add(stu1);

              list1.add(stu2);

              list1.add(stu3);

              list1.add(stu4);

             

             

              Iteratoriter1 = list1.iterator();

              while(iter1.hasNext()){

                     Studentstu  = (Student)iter1.next();

                     if(stu!=null){

                            System.out.println(stu.getName()+"=="+stu.getAge());

                     }else{

                            System.out.println("值为空");

                     }

              }

             

             

             

       }

 

}

package com.newedu.jb.day17.collection;

 

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.ListIterator;

 

/**

 * 集合接口List:

 * 特点:

 * 1:有序集合(有序列表),存取有序

 * 2:允许重复元素

 * 3:允许有null存在,并且可以有多个null值存在。

 *

 *List接口 继承自 Collection接口,List接口就自然的包含了Collection接口中的所有方法(约定)

 *

 *

 * 成员方法:

 *add(),remove(),iterator();contains();clear();isEmpty();size();

 *  除了Collection接口之外的成员方法:

 *  voidadd(int index,Object  element):在指定的索引位置,添加集合元素

 * Object  remove(int index):从集合中移除指定索引位置的元素,返回值为当前删除的元素。

 * Object get(int index):返回指定索引位置的元素

 * Object set(int index,Object element):update 更新 ;更新指定索引位置的元素

 * ListIterator listIterator():返回List特有的列表迭代器(是迭代器的子接口)

 *

 *@author jerry

 *

 */

public class ListDemo2 {

 

       publicstatic void main(String[] args) {

              //第一步:创建集合对象

              Listlist = new ArrayList();

             

              //第二步:创建集合元素

              Stringstr1 = "jerry";

              Stringstr2 = "susan";

              Stringstr3 = "peter";

              Stringstr4 = "jerry";//重复元素

              Stringstr5 = null;//允许为空

              Stringstr6 = null;//允许为空

             

              //第三步:向集合中添加元素

             

              list.add("jerry");

              list.add(0,"susan");//在0个索引位置添加一个元素。

              list.add(0,"peter");//在0个索引位置添加一个元素。

             

              //remove(index,object);

             

              Objectrev = list.remove(1);//susan

              System.out.println("移除的对象:"+rev);

             

              //get(index);返回元素

             

              Objectobj = list.get(1);//"jerry"

              System.out.println("get(1)="+obj);

             

             

              //set(index,object);更新元素呢

              Objectset = list.set(1, "william");

             

              System.out.println("被更新的对象(old值):"+set);

             

              System.out.println("=======遍历集合=======");

              //第四步:遍历集合

              Iteratoriter = list.iterator();

              while(iter.hasNext()){

                     System.out.println(iter.next());

              }

              /**

               * peter

        * william

               */

              System.out.println("=========================");

              //演示列表迭代器的特有方法

              /**

               * boolean hasPrevious():判断是否可以有上一个集合元素

               * Object previous():上一个元素

               *

               * void remove():通过迭代器来移除集合中的元素;与集合中的成员方法remove()是不一样的。

               * Object set(Object): 通过迭代器来更新集合中的元素,与集合中的成员方法set()是不一样的。

               */

             

              ListIteratorlistIter = list.listIterator();

              //顺序迭代 next()

              while(listIter.hasNext()){

                     System.out.println("顺序迭代:"+listIter.next());

              }

             

              //逆序迭代 previous()

              while(listIter.hasPrevious()){

                     System.out.println("逆序迭代:"+listIter.previous());

              }

             

               

       }

 

}

package com.newedu.jb.day17.collection;

 

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

 

/**

 *List 集合中的元素的删除和更新的问题:

 *

 * 代码演示: 1:通过集合本身的成员方法 操作元素 Object remove(int) 和 Ojbect set(int,Object) 2:

 * 通过列表迭代器来操作元素(删除,更新)void remove() 和 voidset(Object);

 *

 *@author jerry

 *

 */

public class ListDemo3 {

 

       publicstatic void main(String[] args) {

              //第一步:创建集合对象

              Listlist = new ArrayList();

 

              //第二步:创建集合元素

              Stringstr1 = "jerry";

              Stringstr2 = "susan";

              Stringstr3 = "peter";

              Stringstr4 = "jerry";// 重复元素

              Stringstr5 = null;// 允许为空

              Stringstr6 = null;// 允许为空

 

              //第三步:向集合中添加元素

 

              list.add("jerry");

              list.add(0,"susan");// 在0个索引位置添加一个元素。

              list.add(0,"peter");// 在0个索引位置添加一个元素。

 

              //Object rev = list.remove(1);

              //System.out.println("删除的对象:"+rev);

              //

              //Object set = list.set(1, "william");

              //

              第四步:遍历集合

              //

              //ListIterator listIter = list.listIterator();

              //

              //while(listIter.hasNext()){

              //System.out.println(listIter.next());

              //}

 

              //通过迭代器操作 remove();

              ListIteratorlistIter = list.listIterator();

 

              while(listIter.hasNext()) {

 

                     Stringstr = (String) listIter.next();//抛

                     if(str.equals("susan")) {

                            //通过迭代器来删除

                            listIter.remove();

                            //通过集合的成员方法来删除

//                          list.remove(str);

                           

                            /**

                             * ConcurrentModificationException 异常:

                             * 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

                             * 现象:当通过迭代器来迭代元素的过程中,又通过 集合的成员方法来修改(删除or 更新)

                             * 此时,会抛出ConcurrentModificationException异常。

                             *

                             * 原因: expectedModCount与 modCount一致了,导致再次调用next()方法,抛出异常

                             *

                             *

                             * 解决方法:在修改集合的时候,既可以通过集合的成员方法来实现,也可以通过迭代器来实现。

                             * 但是两种方式不能混用。

                             * 面试题:

                             * 写java代码吗?做过项目吗?你在最近的项目中,有没有遇到异常,什么异常?你是怎么解决的?

                             */

                     }

 

              }

              //再次遍历集合

              while(listIter.hasPrevious()) {

                     System.out.println(listIter.previous());

              }

 

       }

 

}

题型:

package com.newedu.jb.day18.list;


import java.util.ArrayList;


/**
 * 集合的嵌套遍历
 * 
 * 拿ArrayList举例:
 * 
 * ArrayList<ArrayList<String>>
 * @author jerry
 *
 */
public class NestListDemo {


public static void main(String[] args) {


// jdk 1.7 的类型推断
ArrayList<ArrayList<String>> list = new ArrayList<>();


// 第二步:创建集合元素 ArrayList<String>

ArrayList<String> a1 = new ArrayList<String>();
a1.add("jerry");
a1.add("susan");

ArrayList<String> a2 = new ArrayList<String>();
a2.add("peter");
a2.add("william");


//第三步:向集合中添加元素

list.add(a1);
list.add(a2);


//第四步:遍历集合
for( ArrayList<String> item : list){
System.out.println("集合的元素:"+item);

for(String str :item){
System.out.println("内层的集合元素:"+str);
}
}
}


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值