package cn.sasa.demo1;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class ListDemo {
public static void main(String[] args) { //Collection<String> testColl = new ArrayList<String>();
//testColl.add("qqq");
//speak(testColl);//报错,因为testColl里的元素不是Animal的子类 //List接口的特点:
//有序(存的顺序是怎样的,取出的顺序也是怎样的)
//有索引
//可以存重复元素
//List接口的常用子类:ArrayList/LinkedList
//ArrayList底层采用数组结构,查询快,增删慢,增删会开辟新数组,把原数组的元素copy到新数组中
//LinkList底层采用链表结构,增删快,查询慢,每次查询从链头或链尾查起
//LinkList查找的元素索引如果小于元素长度一半,从链头开始找起,如果大于元素长度的一半,则从链尾找起 //=======================ArrayList==============================
/**
* List接口的特有方法:一般带有索引的方法
* 添加元素
* add(Object e): 向集合末尾处,添加指定的元素
* add(int index, Object e) 向集合指定索引处,添加指定的元素
*/
List<String> strList = new ArrayList<String>();
strList.add("aaa");
strList.add("bbb");
strList.add("ccc");
strList.add("ddd");
System.out.println(strList.toString());
strList.add(2,"ddd");
System.out.println(strList.toString()); /**
* 删除元素
* remove(Object e) 根据对象删除集合中的对象,返回被删除的对象
* remove(int index) 根据索引删除集合中的对象,返回被删除的对象
*/
boolean b = strList.remove("eee");
System.out.println(b);
boolean b1 = strList.remove("aaa");
System.out.println(b1); System.out.println(strList.toString()); /**
* 替换元素
* set(int index, Object e) 将索引上的元素替换成第二个参数的元素
*/
strList.set(0, "hahaha");
System.out.println(strList.toString()); /**
* 取出元素
*/
String str1 = strList.get(2);
System.out.println(str1); //=====================LinkedList=========================
//特点:底层链表结构,查询慢,增删快
//LinkedList 的特有方法不能多态调用
LinkedList<String> strLinkList = new LinkedList<String>();
strLinkList.add("1");
strLinkList.add("2");
strLinkList.add("3");
strLinkList.add("4"); //删除第一个/最后一个
String fir = strLinkList.removeFirst();
String last = strLinkList.removeLast();
System.out.println(fir);
System.out.println(last); strLinkList.add("6");
strLinkList.add("5"); //取出第一个/最后一个
String firget = strLinkList.getFirst();
String lastget = strLinkList.getLast();
System.out.println(firget);
System.out.println(lastget); //添加到链表头/链表尾
strLinkList.addFirst("addFirst");
strLinkList.addLast("addLast");
System.out.println(strLinkList.toString());
}
}

java 集合(三)List接口的更多相关文章

  1. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  2. Java集合框架——Set接口

    第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...

  3. Java集合框架——List接口

    第三阶段 JAVA常见对象的学习 集合框架--List接口 按照集合框架的继承体系,我们先从Collection中的List接口开始学习 (一) 概述及功能(ArrayList演示) (1) 概述 L ...

  4. Java集合框架之接口Collection源码分析

    本文我们主要学习Java集合框架的根接口Collection,通过本文我们可以进一步了解Collection的属性及提供的方法.在介绍Collection接口之前我们不得不先学习一下Iterable, ...

  5. Java集合之Collection接口

    java的集合分为三大接口,分别是Collection,Map,Iterator,集合接口和类在java.util包中,此次主要介绍三大接口之一的Collection接口. 一些Collection允 ...

  6. Java集合及LIst接口

    一.集合的概念 1.概述: 在学习集合前,先回忆一下数组的一个特征---数组有固定的长度,定义一个数组: int[] array = new int[]; 而针对数据长度可变的情况,产生了集合, ja ...

  7. Java集合框架Map接口

    集合框架Map接口 Map接口: 键值对存储一组对象 key不能重复(唯一),value可以重复 常用具体实现类:HashMap.LinkedHashMap.TreeMap.Hashtable Has ...

  8. Java集合框架顶层接口collectiion接口

    如何使用迭代器 通常情况下,你会希望遍历一个集合中的元素.例如,显示集合中的每个元素. 一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合 ...

  9. java集合之Set接口

    Set集合通常不能记住元素添加的顺序,其他的操作和它的父接口基本相同.只是行为上有细微的差别,Set集合不能包含相同的元素.如果尝试添加相同的元素,调用add()方法将返回false,且新元素不能被加 ...

  10. JAVA集合框架 - Map接口

    Map 接口大致说明(jdk11): 整体介绍: 一个将键映射到值的(key-value)对象, 键值(key)不能重复, 每个键值只能影射一个对象(一一对应). 这个接口取代了Dictionary类 ...

随机推荐

  1. Redis数据库高级实用特性:持久化机制

    Redis数据库高级实用特性:持久化机制 大型web系统数据缓存设计 Redis高级特性:虚拟内存的使用技巧 Redis高级实用特性:安全性与主从复制 Memcached.Redis OR Tair

  2. shell中的函数 shell中的数组 告警系统需求分析

     

  3. MTK 自定义按键添加广播

    一.给自定义按键添加广播 修改PhoneWindowManager.java中的interceptKeyBeforeDispatching方法 /frameworks/base/policy/src/ ...

  4. [JS] Topic - hijack this by "apply" and "call"

    Ref: 详解js中的apply与call的用法 call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 参数形式: Function.apply(obj,args) call方法与 ...

  5. [Laravel] 08 - Auth & Data Migration

    登录注册框架 一.加载Auth模块 Step 1, 安装Auth模块 生成相关 laravel 框架内部的代码模块: $ php artisan make:auth 自动添加了路由代码 在larave ...

  6. NLog类库的使用探索——认识配置+实习小感悟

    1 写在前面 1.1 为什么学了软件 1.高考失败,分数不高,不能随心所欲 2.农村孩子,学点技术,将来有口饭吃 3.有科技含量,想玩电脑(那个时候是这么想的,那个时候觉得学计算机就是玩电脑) 1.2 ...

  7. windows cmd命令显示UTF8设置

    windows cmd命令显示UTF8设置   在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...

  8. JS 使用html2canvas实现截图功能的问题记录和解决方案

    在实现“截图”功能时,遇到几个bug,研究了一个上午,终于全部解决了: 下面给大家分享下: 1."图片资源跨域",导致无法截图. 浏览器会提示下面的错误 DOMException: ...

  9. docker 怎么下载指定版本的镜像文件

    在使用Docker时我想pull远端仓库的CentOS 6的镜像,但是我直接搜索下载下来的是最新的版本.那我有没有什么办法直接下载Centos6呢? 方法: 直接上 hub.docker.com 查 ...

  10. NHibernate中的API

    本篇文章介绍的是NHibernate的各种API及其作用. 下图描述了NHibernate的API在分层架构中的作用,下面将进行详细说明. NHibernate的接口大致分为四类:1.  被应用程序调 ...