Java 基础 - Collection集合通用方法及操作/ArrayList和LinkedList的差别优势 /弃用的Vector

Collection的笔记:

/**存储对象考虑使用:
 * 1.数组, ①一旦创建,其长度不可变!② 长度难于应对实际情况
 * 2.Java集合, ①Collection集合: 1.set: 元素无序,不可重复; 2.元素有序,可重复的集合--动态不定长数组
 *             ②Map集合, 具有映射关系的"key - value"对的集合
 * ---------------------------------
 * 1.Collection接口 常用及操作
 *      ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法, ⑤ iterator 来返回迭代器对象
 *      ⑥addall() 和removeall() ,添加或者删除全部! ⑦Object[] toArray() ,将集合转换为Object数组
 * 2.Collection 的遍历方法:
 *         ① 转换成Object[]类进行输出,不常用 ; for(int i=0;i<s.length;i++)
 *         ②使用迭代器进行遍历集合:1.声明 Iterator it=  col2.iterator();2.hasNext();3.返回迭代中的下一个元素:it.next()
 *         ③使用增强的for循环语句: for(Object o: collection) sout(o);   //Object表示确定的类型
 */

Collection的测试代码:

public class TestCollection {
    public static void main(String[] args) {
        ArrayList col = new ArrayList();
        ArrayList col2 = new ArrayList();
        col.add(123);
        col.add("QWQ");
        col.add(new Date());
        col2.addAll(col);
        Object[] s=col2.toArray();   //1.转换成Object[]类进行输出,不常用
        for(int i=0;i<s.length;i++)
            System.out.print("\t("+s[i]+")");
        System.out.println("--------------");
        //2.使用迭代器进行遍历集合:1.声明 Iterator it=  col2.iterator();2.hasNext();3.返回迭代中的下一个元素:it.next()
        Iterator it=  col2.iterator();
        while(it.hasNext()){
            System.out.print("\t"+it.next());
        }
        System.out.println("--------------");
        //3.使用增强的for循环语句: for(Object o: collection)sout(o);   //Object表示确定的类型
        for (Object o: col2)
            System.out.print("\t"+o);


    }
}
View Code(已折叠)

Collection的测试结果:

    (123)    (QWQ)    (Sun Oct 14 17:37:55 CST 2018)--------------
    123    QWQ    Sun Oct 14 17:37:55 CST 2018--------------
    123    QWQ    Sun Oct 14 17:37:55 CST 2018
View Code

ArrayList和LinkedList的笔记:

/** ArrayList (本质:可变长数组 ):List 的主要实现类
 *      易错点: 不可以使用下标直接进行索引,需要get()!
 * List中相对于Collection<E> 新增加的方法
 *      0. 无参数(Object)类型声明构造: List list=new ArrayList();
 *          有参数(String/int...)类型声明构造: List<String> list2=new ArrayList<String>();
 *      1.E get(int index);//返回索引位置的值
 *      2.E set(int index,E element); //设置下标为index位置的值
 *      3.void add(int index,E element);  //增加值
 *      4.E remove(int int index)  //删除一个值
 *      5.int indexOf/lastIndexOf( o)  //正向或逆向查找一个元素值
 *      6.可以调用size()取长度,跑循环进行 get()遍历!
 *      -------------
 *      父类Collection接口 常用及操作
 *  *      ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法, ⑤ iterator 来返回迭代器对象
 *  *      ⑥addall() 和removeall() ,添加或者删除全部! ⑦Object[] toArray() ,将集合转换为Object数组
 *  -------------
 *  LinkedList是依靠链表实现的!优势: 常用来处理频繁的插入和删除操作;
 *  *      1.对于在头部插入和内部删除元素, LinkedList每次为常量时间; 而同样的, ArrayList是线性时间!
 *  *      1.对于定位访问,        LinkedList每次为线性时间; 而同样的, ArrayList是常量时间!
 *  ----------------
 *  * LinkedList的特有操作: (简直就是C++的STL库中的deque双端队列!)
 *        1.构造方法: LinkedList()/LinkedList(Collection c)
 *        2.添加头部或者在尾部: addFirst(E element)/addLast(E element)
 *        3.删除头部或者尾部: removeFirst()/removeLast()
 *  -------------
 *  * Vector(古老的实现类,线程安全, 基本弃用了, JDK 1.0)
 */

ArrayList和LinkedList的测试代码:

public class TestList {
    public static void main(String[] args){
        System.out.println("--------Test ArrayList--------");
        List list=new ArrayList();
        list.add(6666);
        list.add(0,"6666");
        list.add(0,"6667");list.add(0,"6667");
        list.set(0,"6666777");
        for(int i=0;i<list.size();i++)
            System.out.print("\t"+list.get(i));

        System.out.println("\n------Test ArrayList<String>----");
        ArrayList<String> list2=new ArrayList<String>();
        list2.add(0,"6666");
        list2.add(0,"6667");list2.add(0,"6667");
        list2.set(0,"6666777");
        for (String s:list2)
            System.out.print("\t"+s);

        LinkedList<Integer> link1= new LinkedList<Integer>();
        link1.addFirst(666);
        link1.addLast(7777);
        link1.addLast(7777);
        link1.removeLast();
        LinkedList link2= new LinkedList(list2);   //拿ArrayList来构造了LinkedList
        System.out.print("\nlink1: ");
        for (Integer i:link1)
            System.out.print("\t"+i);
        System.out.print("\nlink2: ");
        for (Object i:link2)
            System.out.print("\t"+i);
    }
}
View Code

ArrayList和LinkedList的测试结果:

--------Test ArrayList--------
    6666777    6667    6666    6666
------Test ArrayList<String>----
    6666777    6667    6666
link1:     666    7777
link2:     6666777    6667    6666
View Code

猜你喜欢

转载自www.cnblogs.com/zhazhaacmer/p/9787095.html