(十四)JAVA入门--Collection的子类接口List


一、List特点

1、List有序(存入和取出顺序一致),有索引,元素可重复。Set元素不重复。
2、相对于Collection,除了增删查,扩展了位置索引和修改数据。

二、listIterator迭代器

1、特点:除了iterator的功能外,还有自己特定的listIterator功能。(因为iterator不允许在遍历操作过程中修改或添加数据,所以有了自己的listIterator,可以在遍历过程中,使用listIterator中的方法进行修改或添加操作)。
2、典型方法

        List l1 = new ArrayList();
        l1.add("abc1");
        l1.add("abc2");
        l1.add("abc3");
        l1.add("abc4");
        ListIterator it = l1.listIterator(); //创建list迭代器
        while(it.hasNext()) {
            Object obj = it.next();
            if (obj.equals("abc1")) {
                it.set("123"); //将"abc1"修改"123"
            }
            else if(obj.equals("abc2")){
                it.add("456"); //"abc2"后添加"456"
            }
            else {
                System.out.println(obj);
            }
        }
        System.out.println( l1);

三、List的实现类

1、Vector:内部是数组数据结构,是同步的。最老版本的,几乎不用了。
2、ArrayList:内部是数组数据结构,是不同步的。替代了Vector,查询速度很快。
3、LinkedList:内部是链表数据结构,是不同步的。增删元素速度很快。

四、LinkedList类–链表结构

1。添加
addFirst(E e)、addLast(E e)
2。获取
getFirst()、getLast() :获取但不移除,如果列表为空,抛出NoSuchElementException
peekFirst()、peekLast() :获取但不移除,如果列表为空,返回null。
removeFirst()、removeLast():获取元素并移除,如果列表为空,抛出NoSuchElementException
pollFirst()、peekLast():获取元素并移除,如果列表为空,返回null。
3。用链表实现队列的数据结构
队列:先进先出
堆栈:先进后出

    class DuiLie {
    private LinkedList li;
    public DuiLie(){
        li = new LinkedList();
    }
    public void  addDL(Object obj)
    {
        li.addLast(obj);
    }
    public Object getDL()
    {
        return li.removeFirst();
    }
    public boolean DLisEmpty()
    {
        return li.isEmpty();
    }
}

五、ArrayList类–数组结构

数据添加、删除等与上面相似。下面来存储对象为例子,表示集合是用来存储对象的。

public class Test {
    public static void main(String[] args) {

      ArrayList l = new ArrayList();
      l.add(new Person("a",10));             //存入对象,其实在堆中存放对象的哈希值
      l.add(new Person("b",11));
      l.add(new Person("c",12));
      l.add(new Person("d",13));
      for(Iterator it = l.iterator();it.hasNext();)
      { 
          Person p = (Person) it.next();  
//it.next()是object,所以想要调用Person内中方法,必须向下转型。
          System.out.println(p.getName()+"---"+p.getAge());
      }
    }
}

class Person{
    private String name;
    private int age;
    Person(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值