Collectio集合,List《ArrayList,LinkedList》

集合:

Collection类
package com.collection.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**
 * 数组: 存储同一类型的元素组成集合,固定长度,数组中元素可以是基本数据,也可以是对象。
 * 集合: 存储不同类型对象的容器, 长度可变,集合中的元素必须是Object的子类,不能是基本数据类型。
 * 首字母大写都是对象
 * @author Administrator
 *
 */
public class CollectionDemo {
    /**
     *     boolean add(E o);
        boolean remove(Object o);
        int size();
        boolean contains(Object o);
        boolean isEmpty();
        void clear();
        Iterator<E> iterator();
        boolean addAll(Collection c);
        boolean retainAll(Collection c);
         boolean removeAll(Collection c);
     */

    public static void main(String[] args) {
        // 创建Collection对象
        Collection collection = new ArrayList();
        collection.add("AAA");
        collection.add(new Object());
        collection.add(1.0); // 自动装箱 new Integer(1); // 实体尽量使用包装类
        collection.add("AAA");
        System.out.println(collection); // 有一个学生

        // 获取集合元素个数
        System.out.println(collection.size());

        // 判断是否存在某个对象
        String obj = "AAA";
        boolean flag = collection.contains(obj);
        System.out.println(flag?"存在":"不存在");
        // 移除某个对象, 首次查找的对象会被移除
        flag =  collection.remove(obj);
        System.out.println(flag?"移除成功":"移除失败");

        // 遍历合中的元素
        Iterator it = collection.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println("\r\n");

        // 清空集合中的元素
        // collection.clear();
        // collection = null;

        // 判断集合是否为空,没有关心对象的本身是null
        // isEmpty() 判断size==0
        System.out.println(collection.isEmpty()?"为空":"不为空");

        // Arrays 数组操作的工具类,asList 把一个数组转换为一个集合

        // 批量添加一个集合到一个集合中
        Collection cl = Arrays.asList("BBB","CCC","DDD");
        collection.addAll(cl); // 添加的集合中每一个元素
        collection.add(cl); // 添加的是一个对象
        System.out.println(collection);

        // 批量移除
        Collection cl1 = Arrays.asList(new Double(1),"AAA","BBB");
        collection.removeAll(cl1);
        System.out.println(collection);

        // 获取2个集合之间交集
        collection.retainAll(Arrays.asList("CCC","DDD"));
        System.out.println(collection);
    }

}

List:

package com.collection.demo.list;

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

/**
 * List接口:
 * 特点: 元素是有序,可以包含重复元素,基于数组实现
 * @author Administrator
 *
 */
public class ArrayListDemo {
    public static void main(String[] args) {
        List list = new ArrayList(2);
        // 添加元素
        list.add("AAA"); // 添加单个元素
        list.add("BBB"); // 添加单个元素
        list.add("CCC"); // 添加单个元素
        list.add(1, "BVV"); //插入单个元素
        // 批量添加集合
        list.addAll(Arrays.asList(1,1.1D,1.1F));
        // 批量插入集合
        list.addAll(3, Arrays.asList("VVC","BVC"));

        // 删除元素
        list.remove(0); // 通过对象的下标移除
        list.remove(new Integer(1)); // 根据对象移除
        list.removeAll(Arrays.asList("BBB","CCC")); // 批量移除

        System.out.println(list);
        // 判断元素对象是否存在
        boolean flag = list.contains("VVC");
        System.out.println(flag ? "存在":"不存在");

        // 批量判断是否存在
        flag = list.containsAll(Arrays.asList("VVC",1.1));
        System.out.println(flag ? "存在":"不存在");

        // 判断集合元素个数否为0
        System.out.println(list.isEmpty());

        // 获取单个指定下标元素
        System.out.println(list.get(3));

        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println("\r\n");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next()+" ");
        }

        System.out.println("\r\n");
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()) {
            System.out.print(listIterator.next()+" ");
        }
        System.out.println("\r\n");
        System.out.println("====================");
        // 反向迭代。必须把游标移动到末尾
        ListIterator listIterator1 = list.listIterator(list.size());
        while (listIterator1.hasPrevious()) {
            System.out.print(listIterator1.previous()+" ");
        }
        System.out.println("\r\n");
        System.out.println("---------------------");
        // 增强for循环
        for (Object obj : list) {
            System.out.print(obj+" ");
        }

        // 查询 -> 下标
        // 查找 -> 下标

    }
}
package com.collection.demo.list;

import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class LinkedListDemo {
    public static void main(String[] args) {
        List list = new LinkedList();
        // 添加元素
        list.add("AAA"); // 添加单个元素
        list.add("BBB"); // 添加单个元素
        list.add("CCC"); // 添加单个元素
        list.add(1, "BVV"); // 插入单个元素
        // 批量添加集合
        list.addAll(Arrays.asList(1, 1.1D, 1.1F));
        // 批量插入集合
        list.addAll(3, Arrays.asList("VVC", "BVC"));

        // 删除元素
        list.remove(0); // 通过对象的下标移除
        list.remove(new Integer(1)); // 根据对象移除
        list.removeAll(Arrays.asList("BBB", "CCC")); // 批量移除

        System.out.println(list);
        // 判断元素对象是否存在
        boolean flag = list.contains("VVC");
        System.out.println(flag ? "存在" : "不存在");

        // 批量判断是否存在
        flag = list.containsAll(Arrays.asList("VVC", 1.1));
        System.out.println(flag ? "存在" : "不存在");

        // 判断集合元素个数否为0
        System.out.println(list.isEmpty());

        // 获取单个指定下标元素
        System.out.println(list.get(3));

        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i) + " ");
        }
        System.out.println("\r\n");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + " ");
        }

        System.out.println("\r\n");
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()) {
            System.out.print(listIterator.next() + " ");
        }
        System.out.println("\r\n");
        System.out.println("====================");
        // 反向迭代。必须把游标移动到末尾
        ListIterator listIterator1 = list.listIterator(list.size());
        while (listIterator1.hasPrevious()) {
            System.out.print(listIterator1.previous() + " ");
        }
        System.out.println("\r\n");
        System.out.println("---------------------");
        // 增强for循环
        for (Object obj : list) {
            System.out.print(obj + " ");
        }

        // 删除
        // 插入
    }

}

原文地址:https://www.cnblogs.com/sunBinary/p/10480179.html

时间: 2024-12-11 11:44:08

Collectio集合,List《ArrayList,LinkedList》的相关文章

jdk集合常用方法分析之ArrayList&amp;LinkedList&amp;以及两者的对比分析

集合使用注意事项: 1.集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中去(JDK5之后会进行自动的装箱和拆箱操作,表面上看集合中是可以直接放置原生数据类型进去,但实质上是进过自动装箱成对象操作的): 2.集合当中放置的都是Object类型,因此取出来的也是Object类型(可以放置任意类型的数据),那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型). ArrayList ArrayList常用方法: boolean add(E

Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要  和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数

List ArrayList LinkedList vector简介与区别

ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 Vector: 底层用数组实现List接口的另一个类 特点:重量级,占据更多的系统开销 线程安全 一.同步性 ArrayList,LinkedList是不同步的,而Vestor

描述一下 ArrayList,LinkedList,Vestor各自实现和区别

ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: 一.同步性 ArrayList,LinkedList是不同步的,而Vestor是同步的.所以如果不要求线程安全的话,可以使用ArrayList或LinkedList,可以节省为同步而耗费的开销.但在多线程的情况下,有时候就不得不使用Vector了.当然,也可以通过一些办法包装ArrayList,LinkedList,使他们也达到同步,但效率可能会有所降低.

ArrayList LinkedList Vector

ArrayList是基于数组实现的,没有容量的限制. 在删除元素的时候,并不会减少数组的容量大小,可以调用ArrayList的trimeToSize()来缩小数组的容量. ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下: ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 Ve

第五周——集合、ArrayList、TreeSet

1 一.    回忆数组 1.1数组 存储同一数据类型的集合容器. 1.2数组的特点 1.只能存储同一种数据类型的数据. 2.一旦初始化,长度固定. 3.数组中的元素与元素之间的内存地址是连续的. 1.3注意事项 Object类型的数组可以存储任意类型的数据. 二.为什么要学习集合 2.1需求 收集我们班同学的兴趣爱好. 数组存储兴趣爱好: String[]  arr = new String[]; 难处在于,无法初始化数组的长度,因为每个人的兴趣爱好都不一样,有的人有很多的兴趣爱好,有的人的兴

java基础之集合List-ArrayList、LinkedList、Vector的区别

PS:本篇博客主要参考jdk的底层源码,而非自己动手写代码. 请问ArrayList.LinkedList.Vector的区别 ①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的) ②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候) ③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象 ④Arra

ArrayList,LinkedList的对比

ArrayList,LinkedList都是Collection接口的通用实现方式,两者采用了不用的存储策略,用来适应不同场合的需要. 实现方式 ArrayList的内部采用集合的方式存储数据 唯一需要注意的是对于容量超过阈值的处理逻辑,数组的默认容量大小是10,最大容量是Integer.Max_Value,超过最大容量会抛内存溢出异常, 扩容机制看下面 扩容后的容量是原有容量的1.5倍 LinkedList的实现方式 内部采用双向链表Node内部类来存储数据,由于采用了双向链表,LinkedL

安卓 ArrayList,LinkedList,HashSet,Vector,TreeSet的区别和使用

java的集合就那么几种 总体为:List,Set,Map (都是接口由其子类去实现具体的方法) ArrayList,LinkedList,Vector都属于List List:元素是有顺序的,元素可以重复因为每个元素有自己的角标(索引)  |-- ArrayList:底层的数据结构是数组结构,特点是:查询很快,增 删 稍微慢点,线程不同步 |-- LinkedList:底层使用的是链表数据结构,特点是:增 删很快,查询慢. |--Vector:底层是数组数据结构,线程同步,被ArrayList

ArrayList,LinkedList,Vestor

Collection是最基本的集合接口,声明了适用于JAVA集合的通用方法,list和set都继承自collection接口. Collection接口的方法 boolean add(Object o):向集合中加入一个对象的引用 void clear():删除集合中所有的对象,即不再持有这些对象的引用 boolean isEmpty():判断集合是否为空 boolean contains(Object o): 判断集合中是否持有特定对象的引用 Iterartor iterator():返回一个