黑马程序员-有关List集合的总结

---------------------- android开发java培训、期待与您交流! ----------------------

黑马程序员-有关List集合的总结

Java.util包中提供了一些集合类,这些集合类又被称为容器。提到容器就能联想到数组,集合类与数组之间的不同之处在于,数组的长度是固定的,集合的长度是可变的,数组用于存放基本类型的数据,集合用来存放对象的引用。常见的集合有List集合、Set集合、Map集合,其中List集合与Set集合继承了Collection接口,各接口还提供了不同的实现类。

Collection接口是层次结构中的根接口。构成Colloection接口通常不能直接使用,但接口提供了添加元素、删除元素、管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List集合与Set集合是通用的。

List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,个元素的顺序就是对象插入的顺序。类似Java数组,用户可以通过使用索引来访问集合中的元素。

有关List集合的代码笔记:

/*

存入TreeSet类实现的Set集合必须实现Comparable接口,该接口中的

compareTo(Object o)方法比较此对象的顺序,如果该对象小于、等于

或者大于指定的对象,则分别返回整数、0或者正整数。

*/

 

import java.util.*;

class UpdateStu implements Comparable<Object>

{

      String name;

      long id;

      public UpdateStu(String name, long id) //构造方法

      {

             this.id = id;

             this.name = name;

      }

      public int compareTo(Object o) //覆盖父类中的compareTo方法

      {

             UpdateStu upstu = (UpdateStu) o;

             int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);

             return result;

      }

      public long getId() //构造获取ID方法

      {

             return id;

      }

      public void setId(long id) //构造设置ID方法

      {

             this.id = id;

      }

      public String getName() //构造获取name方法

      {

             return name;

      }

      public void setName(String name) //构造设置name方法

      {

             this.name = name;

      }

      public static void main(String[] args)

      {

             UpdateStu stu1 = new UpdateStu("李同学", 01011);//创建UpdateStu对象

             UpdateStu stu2 = new UpdateStu("陈同学", 01021);

             UpdateStu stu3 = new UpdateStu("王同学", 01051);

             UpdateStu stu4 = new UpdateStu("马同学", 01012);

             TreeSet<UpdateStu> tree = new TreeSet<>();

             tree.add(stu1);

             tree.add(stu2);

             tree.add(stu3);

             tree.add(stu4);

             Iterator<UpdateStu> it = tree.iterator();//Set集合中的所有对象的迭代器

             System.out.println("Set集合中的所有元素:");

             while (it.hasNext()) //遍历集合

             {

                    UpdateStu stu = (UpdateStu) it.next();

                    System.out.println(stu.getId() + " " + stu.getName());

             }

             it = tree.headSet(stu2).iterator();//截取排在stu2stu3之间的对象

             System.out.println("截取前面部分的集合:");

             while (it.hasNext()) //遍历集合

             {

                    UpdateStu stu = (UpdateStu) it.next();

                    System.out.println(stu.getId() + " " + stu.getName());

             }

             it = tree.subSet(stu2, stu3).iterator();

             System.out.println("截取中间部分的集合");

             while (it.hasNext())

             {

                    UpdateStu stu = (UpdateStu) it.next();

                    System.out.println(stu.getId() + " " + stu.getName());

             }

      }

}

下边是课件上的例题实现程序:

/*

Collection

       Lise:元素是有序的

       set:元素是无序的

*/

 

import java.util.*;

class ListDemo

{

       public static void main(String[] args)

       {

              ArrayList al=new ArrayList();//建立数组列表,ArrayList实现了可变数组,允许保存所有元素

              al.add("java01");//向集合添加元素

              al.add("java02");

              al.add("java03");

 

 

              sop(al);

              ListIterator li=al.listIterator();//调用迭代器

 

              sop("hasPrevious():"+li.hasNext());

              sop("hasPrevious():"+li.hasPrevious());

              while(li.hasNext())

              {

                     Object obj=li.next();

                     if(obj.equals("java02"))

                            li.add("java000009");

              }

              sop("hasPrevious():"+li.hasNext());

              sop("hasPrevious():"+li.hasPrevious());

 

              sop(al);

 

/*           Iterator it=al.iterator();//迭代器

              while(it.hasNext())

              {

                     Object obj=it.next();

                     if(obj.equals("java02"))

                            //al.add("java000009");

                     it.remove();

                     sop("obj="+obj);

              }

              sop(al);

*/

       }

       public static void sop(Object obj)

       {

              System.out.println(obj);

       }

}

ArrayList类实现了可变的数组,允许保存所有元素,包括NULL,并且可以根据索引位置对集合进行快速的随机访问,缺点是向指定的索引位置插入对象或者删除对象的速度较慢。

 

---------------------- android开发java培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值