集合框架-List

集合框架-List

List:

1.是有序的,存入的顺序和取出的顺序一致。

2.元素是有索引的。

3.元素可以重复。

了解List接口的特有方法,注意:这些特有方法都是围绕着角标定义的。

1.add(index,element);

2.remove(index):

3.set(index,element);

4.get(index);

package cn.itcast.p5.list;
 
import java.util.ArrayList;
import java.util.List;
 
 
 
public class ListDemo {
     
    /**
     * @param args
     */
    public static void main(String[] args) {
    //创建list集合的对象。
    List list = new ArrayList();
    listDemo(list);
    }
    /*
     * 演示List接口。
     */
    public static void listDemo(List list){
        //1,添加元素。
        list.add("abc3");
        list.add("abc9");
        list.add("abc1");
        list.add("abc4");
        //2,指定位置增加元素。
        //list.add(2,"abc2");
        //3,删除指定角标元素。
        //list.remove(4);
        //4,修改指定位置的元素。
        //list.set(2,"abc77");
        //5,获取指定位置的元素。
        System.out.println(list.get(1));
        System.out.println(list);
    }
 
}
 
 
 
package cn.itcast.p5.list;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class ListDemo2 {
 
    public static void main(String[] args) {
     
        /*
         * 取出list中的所有元素。
         * 
         */
        List list = new ArrayList();
        list.add("abc1");
        list.add("abc3");
        list.add("abc2");
        list.add("abc6");
        
        //for(Iterator it = list.iterator(); it.hasNext(); ){
            //System.out.println(it.next());
        //}
        
        //List特有的取出所有元素的方式。
        for (int i = 0; i < list.size(); i++) {
            System.out.println("get("+i+"):"+list.get(i));
            

/*
 * 列表迭代器是List集合的特有迭代器,可以在迭代过程中实现增删改查。
 */  
            
        ListIterator it = list.listIterator();
        while(it.hasNext()){
            Object obj = it.next();
          //如果用Iterateror()会有ConcurrentModificationException不能在迭代过程实现增删
            if(obj.equals("abc2")){
                 //list.add("abc9");
                  it.add("abc9");
            }
        }
   }
}

List接口支持

List

|--Vector:数组结构的,是同步的。被ArrayList替代,因为效率低。

|--ArrayList:数据结构是数组结构,是不同步的。查询速度很快。

|--LinkedList:数据结构是链表结构,是不同步的。增删速度很快。

ArrayList存储自定义对象

ArrayList查询速度快,最为常用的集合之一,使用集合的时候,查询的功能用的多。

package cn.itcast.p7.arraylist;
 
import java.util.ArrayList;
import java.util.Iterator;
 
import cn.itcast.bean.Person;
 
public class ArrayListDemo {
    public static void main(String[] args) {
        //创建一个ArrayList集合对象。
        ArrayList al = new ArrayList();
        //添加Person对象,到集合中,其实集合中记录是对象的引用。
        al.add(new Person("lisi1",21));//add(Object obj)
        al.add(new Person("lisi6",26));
        al.add(new Person("lisi2",22));
        al.add(new Person("lisi7",27));
        //取出所有Person对象。
        for (Iterator it = al.iterator(); it.hasNext();) {
               //System.out.println(it.next());
               //调用了Object的toString()方法可以在Person中重载
         
        Person p = (Person)it.next();//取元素时,要强转才可以使用子类特有方法。
        System.out.println(p.getName()+","+p.getAge());
        }
    }
}

LinkedList特有方法

package cn.itcast.p8.linkedlist;
import java.util.LinkedList; 
public class LinkedListDemo {
    public static void main(String[] args) {
        /*
         * LinkedList特有。
         * 
         * addFirst();
         * addLast();
         * 
         * getFirst();
         * getLast();
         * 
         * removeFirst();
         * removeLast();
         */
        //创建一个链表对象。
        LinkedList link = new LinkedList();
        link.addFirst("abc1");
        link.addFirst("abc2");
        link.addFirst("abc3");
        link.addFirst("abc4");
        //System.out.println(link.removeFirst());
        //System.out.println(link.removeFirst());
        //System.out.println(link.getFirst());
        //System.out.println(link.getFirst());
        //System.out.println(link);
        while(!link.isEmpty()){
            System.out.println("link:"+link.removeLast());
        }
    }
}

LinkedList模拟堆栈结构

LinkedList:数据结构是链表结构,是不同步的。增删速度很快

/**用LinkedList模拟堆栈或者队列数据结构。*/

//描述一个具备先进后出的数据结构堆栈。  
class MyStack{
    private LinkedList link;
    MyStack(){
        link = new LinkedList();
    }
    /**
     * 提供一个存储元素的方法。
     */
    public void myAdd(Object obj){
        link.addLast(obj);
    }
    /**
     *  提供一个获取元素的方法。
     */
    public Object myGet(){
        return link.removeLast();
    }
    /**
     * 判断容器中是否有元素。
     */
    public boolean isNull(){
        return link.isEmpty();
    }
}    

package cn.itcast.p8.linkedlist;
import java.util.LinkedList;
public class LinkedListTest {
    public static void main(String[] args) {
        //创建一个自定义个堆栈容器。
        MyStack stack = new MyStack();
        stack.myAdd("abc1");
        stack.myAdd("abc2");
        stack.myAdd("abc3");
        stack.myAdd("abc4");
        stack.myAdd("abc5");
        while(!stack.isNull()){
            System.out.println(stack.myGet());
        }
    }
}

集合List练习

定义功能,去除ArrayList集合中的重复元素。

//第一种方式
public static List getSingleElement(List list){
    //1,创建一个新的容器。
    List temp = new ArrayList();
    //2,遍历已有集合中的元素。并将其存储到新的集合中,在存储时进行判断。新容器中是否包含该元素。
    for(Iterator it = list.iterator(); it.hasNext(); ){
        Object obj = it.next();
        if(!temp.contains(obj)){
            temp.add(obj);
        }
    }
    return temp;
}

//第二种方式。
public static void getSoingleElmement2(List list){
    for(int x=0; x<list.size(); x++){
        Object obj = list.get(x);
        for(int y=x+1; y<list.size(); y++){
            if(obj.equals(list.get(y))){
                list.remove(y);
                y--;
            }
        }
    }
}
时间: 2024-10-05 21:22:51

集合框架-List的相关文章

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

JAVA基础之集合框架

集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能).Java中的集合框架定义了一套规范,用来表示.操作集合,使具体操作与实现细节解耦. 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎"增删改查"四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了. 设计理念 主要理念用一句话概括就是:提供一套"小而美"的API.API需要对

java中的集合框架

由于数组具有属性单一,长度不可改变的缺点,于是在程序中我们使用集合来代替它. 集合中不可放入基本数据类型,基本数据类型都是通过自动拆包和自动装箱功能才能放入和取出集合. 分类:Collection接口和Map接口 Collection:存放单一值元素,又可分为list接口类型和set接口类型 list接口类型:存放元素是有序的可重复的,可通过循环来取出其中的元素,实现类ArrayList() set接口类型:hash值排列,存放元素是无序不可重复的,通过指针取出其中元素,实现类HashSet()

JAVA集合框架

收藏 查看我的收藏 146有用+1 56 编辑 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet.集合框架是为表示和操作集合而规定的一种统一的标准的体系结构.任何集合框架都包含三大块内容:对外的接口.接口的实

Java集合框架学习笔记

本文为学习笔记,学习课程为慕课网Java入门第三季中的集合框架部分,若需要研究文中的代码,可前往下载.http://www.imooc.com/learn/110 1. List(Collection子接口) 1.1 实例化 List list = new ArrayList(); ??List是一个接口,不可直接实例化,通常情况下ArrayList实现类进行实例化. 1.2 增 1.2.1 add(obj) ??直接将obj对象加入List末位. 1.2.2 add(i, obj) ??将ob

Java学习之集合框架的迭代器--Iteratorjk及ListItertor接口

通常情况下,你会希望遍历一个集合中的元素.例如,显示集合中的每个元素.一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或ListIterator接口.迭代器,使你能够通过循环来得到或删除集合的元素.ListIterator 继承了Iterator,以允许双向遍历列表和修改元素.Iterator和ListIterator都是泛型接口,它们的 声明: interface  Iterator

我所理解Java集合框架的部分的使用(Collection和Map)

所谓集合,就是和数组类似--一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接口,长虚线表示抽象类,实线表示类,箭头表示实现接口或者继承)(在网络上找的图,不知道原作者,侵权请联系我删除)(总之,关系很复杂,所以不用记得这个图,只是用来吓吓人而已的). 下面贴上个人理解之精简版之Collection(集)和Map(地图?暂且这么理解吧),话说思维导图蛮好用,以下是两幅思维导图

【Java集合源码剖析】Java集合框架

Java集合工具包位于package java.util下.包含了一些常用的数据结构,如数组.链表(单/双向).树.栈.队列.哈希表等. Java集合框架大致可分为五部分:List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Collections). Java集合类的整体框架如下: 如图,Java集合类大致分为两大类:Collection和Map. Collection主要包括两部分:List和Set. List接口通常表示一个列表(数

【集合框架】JDK1.8源码分析之Collections &amp;&amp; Arrays(十)

一.前言 整个集合框架的常用类我们已经分析完成了,但是还有两个工具类我们还没有进行分析.可以说,这两个工具类对于我们操作集合时相当有用,下面进行分析. 二.Collections源码分析 2.1 类的属性   2.2 构造函数 private Collections() { } 说明:私有构造函数,在类外无法调用. 2.3 方法分析 下面是Collections的所有方法. 可以看到,Collections的方法包含了各种各样的操作.下面分析最常用的方法. 1. sort函数 该函数有两个重载函