Java之list

在Java中必须掌握的东西:Collection集合这个概念,首先来看List集合。

public interface List extends Collection从这里就可以看出基本的内容了,首先List是个接口,然后是继承自Collection,而public interface Collectionextends Iterable,public interface Iterable。

1.List代表着一个有序的队列,所有就有get()的方法,实现类有四个:ArrayList,LinkedList,Vector,Stack。

ArrayList是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。

LinkedList是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率低。

Vector是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。

当然,常用的一些方法肯定要知道,比如add,get,size,indexOf,lastIndexOf,iterator,remove等等。

List的遍历方法:

package com.ltp.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        String str = null;
        for (int i = 0; i < 10; i++) {
            list.add("aaa" + i);
        }

        // 遍历方法1
        System.out.println("=====方法1=======");
        for (String tmp : list) {
             System.out.print(tmp+"\t");
        }
        System.out.println();
        System.out.println("====方法2========");

        // 遍历方法2
        for (int i = 0; i < list.size(); i++) {
            str = list.get(i);
            System.out.print(str+"\t");
        }
        str = null;
        System.out.println();
        System.out.println("====方法3========");

        // 遍历方法3
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            str = it.next();
            System.out.print(str+"\t");
        }
        str = null;

    }
}

list中的数据是可以重复的,所有有时候可能用到List的去重复操作。暂时知道的有两种方法:一是使用list的contains,二是使用set来去除其中的重复项。

package com.ltp.collection;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class ListRemoveRepeat {
    /*public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(1);
        list.add(1);
        list.add(4);

        Iterator<Integer> it = list.iterator();
        List<Integer> newlist = new ArrayList<Integer>();

        while(it.hasNext()){
            int a = it.next();
            if(newlist.contains(a)){
                it.remove();
            }else{
                newlist.add(a);
            }
        }

        for(Integer i :newlist){
            System.out.print(i+"\t");
        }
    }*/


    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(1);
        list.add(1);
        list.add(4);

        Iterator<Integer> it = list.iterator();
        Set<Integer> set = new HashSet<Integer>();

        while(it.hasNext()){
            int a = it.next();
            set.add(a);
        }

        for(Integer i :set){
            System.out.print(i+"\t");
        }
    }
}

list与数组之间的相互转换?

package com.ltp.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArray {
    public static void main(String[] args) {
        //list转换为数组
        /*
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(5);
        list.add(1);
        list.add(2);

        Integer a[] = null;
        a = (Integer[]) list.toArray(new Integer[list.size()]);

        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+"\t");
        }*/


        //数组转换为list
        Integer a[] = {1,2,3,5,8,2,5};
        List<Integer> list = new ArrayList<Integer>();
        list = Arrays.asList(a);
        for(Integer i:list){
            System.out.print(i+"\t");
        }


    }
}

list中排序问题?

Collections有一个sort方法,其实现是通过compare来实现的,实际应用中可以通过实现comparable接口来完成排序。

参考内容:
http://www.jb51.net/article/42767.htm

http://blog.sina.com.cn/s/blog_8250c39a0101ka9r.html

http://blog.csdn.net/jkh753/article/details/11651599

http://blog.csdn.net/c622724/article/details/8486909

http://phl.iteye.com/blog/696700

http://www.cnblogs.com/liuyuanyuanGOGO/p/java_collections.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值