精华内容
下载资源
问答
  • package List_Interface;... * 1、有序,存入123 取出123 * 2、有索引 * 3、允许存储重复元素 * * public void add(int index,E element):将指定的元素,添加到集合的指定位置上 * public E get(int i
    package List_Interface;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /*
     * java.util.List接口继承了Collection接口
     * List接口的特点:
     * 1、有序,存入123 取出123
     * 2、有索引
     * 3、允许存储重复元素
     * 
     * public void add(int index,E element):将指定的元素,添加到集合的指定位置上
     * public E get(int index):返回集合中指定位置的元素
     * public E remove(int index):移除集合中指定位置的元素
     * public E set(int index,E element):替换集合中指定位置的元素,返回被替换的元素
     */
    public class List_Interface {
    	public static<E> void main(String[] args) {
    		//创建一个List集合
    		List<String> list = new ArrayList<>();
    		list.add("1");
    		list.add("2");
    		list.add("3");
    		list.add("4");
    		list.add("5");
    		System.out.println(list);
    		list.add(3,"3.5");//指定索引处添加元素
    		System.out.println(list);
    		String i =list.set(3,"3.6");//替换指定索引处的元素 并返回被替换的元素
    		System.out.println(list);
    		System.out.println(i);
    		/*
    		 * 遍历list可以 
    		 * 普通for循环 利用get方法
    		 * 迭代器 
    		 * 增强for
    		 */
    	}
    }
    //IndexOutOfBoundException: 索引越界异常 一般集合会报
    //ArrayIndexOutOfBoundException: 数组索引越界异常
    //StringIndexOutOfBoundException: 字符串索引越界异常
    
    package List_Interface;
    
    import java.util.LinkedList;
    
    /*
     * java.util.LinkedList集合implements List接口
     * LinkedList集合的特点:
     * 1:底层是一个链表结构,查询慢,增删快
     * 2:包含了大量操作首尾元素的方法
     * 注意:::必须使用LinkedList集合特有的方法,不能使用多态
     */
    public class _LinkedList {
    public static void main(String[] args) {
    	show01();
    	show02();
    }
    public static void show01() {
    	LinkedList<String> linkedlist = new LinkedList<>();
    	linkedlist.add("a");
    	linkedlist.add("b");
    	linkedlist.add("c");
    	System.out.println(linkedlist);
    	linkedlist.addFirst("www");//在集合的开头插入一个元素
    	System.out.println(linkedlist);
    	linkedlist.addLast(".com");
    	System.out.println(linkedlist);//在集合末尾添加一个元素
    	linkedlist.push("www");//等效于addFirst
    	System.out.println(linkedlist);
    }
    public static void show02() {
    	LinkedList<String> linkedlist = new LinkedList<>();
    	linkedlist.add("a");
    	linkedlist.add("b");
    	linkedlist.add("c");
    	String i =linkedlist.getFirst();//获取第一号数据
    	String k = linkedlist.getLast();//获取最后一号数据
    	System.out.println(i+","+k);
    	linkedlist.clear();// 清空集合中的元素
    	boolean o = linkedlist.isEmpty();//如果集合是空的  返回true
    	System.out.println(o);
    	
    	linkedlist.removeFirst();//移除第一个元素
    	linkedlist.removeLast();//移除最后一个元素  同理
    }
    }
    
    
    展开全文
  • Arraylist和LinkedList

    2020-11-01 18:48:52
    允许存入重复的数据 中元素存放顺序为存入顺序。 是非线程安全的,如果想保证线程安全的前提下操作 可以使用 List list = Collections.synchronizedList(new LinkedList(…)) 来生成一个线程安全的LinkedList ...

    LinkedList

    • 集合底层实现的数据结构为双向链表
    • 集合中元素允许为 null
    • 允许存入重复的数据
    • 中元素存放顺序为存入顺序。
    • 是非线程安全的,如果想保证线程安全的前提下操作
    • 可以使用 List list = Collections.synchronizedList(new LinkedList(…)) 来生成一个线程安全的LinkedList

    ArrayList

    • ArrayList就是数组列表,主要用来装载数据,当我们装载的是基本类型的数据int,long,boolean,short,byte…的时候我们只能存储他们对应的包装类
    • 它的主要底层实现是数组Object[] elementData

    1.7初始化的时候,调用this(10),直接容量为10;1.8默认走空数组,第一次add才默认为10

    查询效率高,增删效率低,线程不安全。使用频率很高

    增删很慢,你能说一下ArrayList在增删的时候是怎么做的么?主要说一下他为啥慢?

    • index新增,也有直接新增的,在这之前他会有一步校验长度的判断ensureCapacityInternal,就是说如果长度不够,是需要扩容的
    • 在扩容的时候,老版本的jdk和8以后的版本是有区别的,8之后的效率更高了,采用了位运算,右移一位,其实就是除以2这个操作
    • 比如有下面这样一个数组我需要在index 5的位置去新增一个元素A,复制了一个数组,是从index 5的位置开始的,然后把它放在了index 5+1的位置
    • 复制数组效率低

    会初始化数组大小!但是List的大小没有变,因为list的大小是返回size的

    线程安全版本的数组容器是Vector

    LinkedList ArrayList区别

    双向链表&Object数组
    插入删除&随机查找
    都是不同步的,不保证线程安全
    内存空间占用,ArrayList在结尾预留容量空间,LinkedList每一个元素消耗更多的空间

    //ArrayList实现线程安全
    List<String> list = Collections.synchronizedList(new ArrayList<String>());
    

    区别:
    数据结构实现:arraylist是动态数组的数据结构实现,而linkedList是双向链表的数据结构实现

    随机访问效率:arraylist效率高,因为linkedlist是线性的数据存储,需要移动指针从前往后一次查找

    增加和删除效率:在非首尾的增加和删除,linkedlist效率更高,因为arraylist增删操作影响到数组其他数据的下标

    所以在频繁读取集合中的元素使用arraylist,在插入和删除操作比较多时,推荐使用linkedlist

    lists.add(list)和lists.add(new ArrayList<>(list))的区别

    /第一种情况:
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> row = new ArrayList<>();
    
    for (int i = 1; i <= 3; i++) {
      row.add(i);
      res.add(row);
    }
    //结果:res: [[1,2,3],[1,2,3],[1,2,3]]
    //只创建了两个对象,res和row,最后添加进res的是三个同样的对象row的引用。
    
    //第二种情况:
    for (int i = 1; i <= 3; i++) {
      row.add(i);
      res.add(new ArrayList<>(row));
    }
    //结果:res: [[1],[1,2],[1,2,3]]
    //创建了5个对象,res,row以及row的三个不同时刻的拷贝。
    
    展开全文
  • 允许出现重复的元素,元素有序,即存入顺序和取出顺序一致。 1、线程安全性:ArrayList和LinkedList都是不同步的,不保证线程安全 2、底层数据结构: (1)ArrayList集合底层采用的是Object数组结构。 (2)...

    简介:ArrayList和LinkedList都是List接口的实现类。允许出现重复的元素,元素有序,即存入顺序和取出顺序一致。

    1、线程安全性:ArrayList和LinkedList都是不同步的,不保证线程安全

     

    2、底层数据结构:

    (1)ArrayList集合底层采用的是Object数组结构。

    (2)LinkedList底层采用的是双向链表结构(jdk7之前为循环链表,jdk7取消了循环)。

     

    3、插入和删除:

    (1)如果容量为 n 的ArrayList在数组中的指定位置 i 插入一个元素,则原数组的i元素以及(n-i)个元素都需要进行移位。所以时间复杂度是O(n-i)。元素越多,增删速度越慢。

    (2)LinkedList因为是双链表结构,插入和删除只需要更改元素之间的引用关系即可,增删的速度跟元素的多少无关。时间复杂度近似O(1)。

     

    4、查询:ArrayList支持高效快速随机访问,通过元素序号快速查询获取元素。而LinkedList不支持快速访问,即查询慢。

     

    5、内存空间占用:ArrayList的空间浪费主要是因为需要在列表的结尾预留一定的容量空间,而LinkedList的空间花费主要体现在每个元素的存储需要更大的空间(要存放每个元素的前驱引用和后继引用)。

     

    拓展

    RandomAccess接口:RandomAccess 接口中好像并没有定义什么,只是一个标识,标识实现这个接口的类具有随机访问功能。 如ArrayList就实现了RandomAccess 接口。

     

    遍历方式选择:

    (1)实现了RandomAccess 接口,优先选择for循环遍历,其次是foreach。

    (2)未实现RandomAccess 接口,优先选择迭代器Iterator遍历(foreach底层也是通过Iterator实现的)。大SIZE数据千万千万不能使用for循环遍历。

     

    原因:

    LinkedList中的get()的源码

    如果用for循环遍历LinkedList,在get第i个元素需要先到get第(i-1)个元素,等于在拿任意一个位置的元素都需要把前面的数据走一遍。等于for循环内嵌套了一个for循环,数据非常大时,时间复杂度近似于O(N*N)。而时间的复杂度大小顺序为O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)。因此切忌不能用for循环来比遍历LinkedList数组。

     

    ArrayList中的get()的源码

    ArrayList是直接从数组中里拿一个位置上的元素,时间复杂度是O(1),是非常快的。

     

     

    展开全文
  • LinkedList特点 1.底层的数据结构是双向链表/双头链表 2.有序:存入和取出元素的顺序是一致的 3.元素有索引,可重复 4.增删快:元素的空间分配不连续,添加删除元素时,只需要找到对应位置,再修改对应节

    ArrayList特点

    1.底层的数据结构是数组
    2.有序: 存入和取出元素的顺序是一致的
    3.元素有索引,可重复
    4.查询快: 元素有索引,且元素的内存空间连续
    5.增删慢: 数组的长度不可改变,当存入的元素的达到上限再存入时,会创建新数组,拷贝元素并销毁老数组
    6.线程不同步也不安全,但效率高数组结构分析

    LinkedList特点

    1.底层的数据结构是双向链表/双头链表
    2.有序:存入和取出元素的顺序是一致的
    3.元素有索引,可重复
    4.增删快:元素的空间分配不连续,添加删除元素时,只需要找到对应位置,再修改对应节点保存地址的地方
    5.查询慢:要么从前查,要么从后查,不能根据索引直接查询
    6.线程不同步,不安全,但效率高
    链表结构分析

    展开全文
  • 接口List特点:存入数据可以重复且有顺序ArrayList和LinkedList的区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为...
  • 单选 sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的;而order表示每次遍历的序列都是一样的,元素前后关系每次遍历都是确定的,那么下列哪些集合既是sort,又是order的:答案在文末 A....
  • (有序是指元素存入的先后顺序与输出的先后顺序是一致的)Vector 内部是数组数据结构,是线程安全的。是最早出现的list接口(现在几乎不怎么使用)。Vector是百分百延长数组,即新数组的长度是原来数组长度的2倍。...
  • 创建一个长度为3的数组,存入三个女朋友对象,假设女朋友的属性为:姓名和年龄。 代码实现 女朋友类 public class GirlFriend { private String name; private int age; public GirlFriend() { } public ...
  • 思路 正常情况可以建立一个hashset用于储存已有数据 如果没有重复则指针往后挪 并且把数字存入hashset 如果重复 则直接删除 继续遍历;o(n) 没有缓存的方式是两层循环 第一层用于遍历整个list 第二层用于遍历第一...
  • (注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路 首先明确什么是公共节点 公共节点指的是两个链表从某一节点开始 next都指向同一节点 比如 0-1-2-3-4-5-null a-b...
  • List接口中的数据对象有索引,存入数据有顺序,并且元素可以重复。 2、List方法摘要 boolean add(Object e); 向列表的尾部添加指定的元素(可选操作)。 void add(int index, Object element); 在列表的指定位置...
  • 在C#中,数组由于是固定长度的,...但是ArrayList也有一个缺点,就是存入ArrayList里面的数据都是Object类型的,所以如果将值类型存入和取出的时候会发生装箱、拆箱操作(就是值类型与引用类型之间的转换),这个会影响程
  • 目录集合框架Collection 集合框架 集合理解为是:容器。 集合和数组的区别: 数组:  1.... 2.创建数组时,只能存储同一种类型的数据  3.... --List :有序可重复,有序指的是存入的顺序和取出的顺序
  • (1)从键盘输入一组字符串,以"quit"结束,将这些字符串分别存入ArrayList, LinkedList, HashSet,TreeSet集合中; (2)遍历输出这些集合总的所有字符串 1.导入需要的包 导个用到的包就这么多代码,我们观察到这些用到的...
  • ArrayList:顺序表,元素有存入顺序,元素存在下标。 底层是数组存储数据,默认初始容量10,每次扩容是在当前的基础上增加一半(size>>1);增删元素的操作相对复杂,查询元素的操作相对简单,是一个线程不...
  • list接口表示有序(存入顺序和取出顺序一致)可以存储重复值的集合,并且可以保存null元素。 它的实现类有ArrayList和LinkedList、Vector等。 ArrayList:底层是数组,查询元素和修改某一个元素快。 LinkedList: -...
  • 2.用一个set集合将map中的key存入(存入操作使用keySet()方法 ) 3.加强for循环遍历set集合 , 用map中的get()方法找到相应key所对应的value System.out.println("请输入要查询的考试"); Scanner scan1 = new ...
  • 广度优先,则是用的队列,将每一层的节点先存入队列中去,后依次取出队列中的节点,显示与当前节点存在边,但是未被访问过的节点,也就是下一层与之相联系的节点,再将这些节点存入队列。经过层层迭代,就可以完全...
  • 数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    数据结构 1800题》 第一章 绪论 一、选择题 1. 算法的计算量的大小称为计算的(B )。【北京邮电大学2000 二、3 (20/8分)】 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于(C )...
  • 自己的讲解的课程选择了数据结构和算法。这个系列的讲解分为上下两章</code>,<code>javascript语言辅助。本篇文章为上章,涉及的内容是基本的数据结构。在日本,晚上没事安排@…@,...
  • java中的Collection

    2015-11-30 22:28:06
    list中存入数据是有序的,可以重复的数据。 ArrayList底层是用数组来实现的,内存空间是连续的。而LInkedList是用链表来实现的,内存空间是不连续的。 ArrayList中访问读取数据速度比较快,但是LInkedList的增删...
  • 一.集合的概念 1.什么是集合 集合是一种容器, 长度可变, 可以存储任意类型的对象. 基本数据类型也可以装入集合, 但其实内部是先自动装箱成包装类对象, 然后再存入集合的 ... LinkedList 底层数据结构是链表,...
  • java集合类框架

    2020-07-01 01:14:02
    collection 顶层接口 List 列表,元素是有序的(角标带索引),可以有重复...当往ArrayList存入元素要求不重复时,可以根据需要重写元素equal方法 LinkedList 底层数据结构是链表数据结构,(链表详见https://blog.c
  • 集合

    2019-03-07 21:08:40
    集合中只能存储对象,比如集合中存入int型数据,它会自动转化为Integer类后存入; 集合里放的是多个对象的引用,对象本身还是放在堆内存中; 集合可以存放不同类型,不限数量的数据类型。 List(列表;实现了...
  • 一、集合 1、概念 集合是一个长度可变,可以存储多个数据的容器 ...存入数据有序,可以根据下标操作集合元素 实现类: ArrayList LinkedList Vector Stack 1、ArrayList 有序表 1、底层是由数组来实现...
  • S2 第六章_集合框架

    2018-03-26 17:20:34
    List list = new LinkedList();//便于修改ArrayList doglist = new ArrayList();//便于访问打印个数System.out.println(doglist.size());存入数据,给数组赋值doglist....
  • ArrayList(重点) LinkedList 方法: 添加数据add(Object o) 根据下标获取集合中的数据get(int index) 集合中的数据长度size() Set:无序唯一的集合 HashSet  方法: 添加数据add(Object o) 遍历set集合 迭代器 增强for...
  • Java--集合大全List,Set,Map超详细讲解

    千次阅读 多人点赞 2019-07-06 21:05:48
    代码实现三.List集合1主要方法2.ArrayList集合2.1代码演示3.ArrayList如何存入自定义的数据?4.LinkedList集合5.ArrayList与LinkedList四.Set集合1.哈希(hash)前序:1.1哈希表:2 . Hashset...
  • Java_SE集合框架List-Set

    2020-10-09 19:56:58
    是一个接口,表示有序(存入和取出)可重复集合,可以保存null元素 。 List常用的子类有ArrayList、LinkedList、Vector 1.ArrayList 内部基于数组实现的一个集合类,且数组的大小可变。查询比较快,添加和删除相对于...
  • 生产者负责产生数据,将数据存入消息队列,不关系数据该如何处理,当消息队列满时不再生产数据 消费者负责从消息队列中取数据,对数据进行处理,当消息队列为空时,停止消费 消息队列用来平衡生产和消费的消息资源,...

空空如也

空空如也

1 2 3 4 5 6
收藏数 101
精华内容 40
关键字:

linkedlist存入数据