List接口是Collection的子接口,用于定义线性表结构,当中ArrayList能够理解为一个动态数组,而LinkedList能够理解为一个链表

经常使用操作:

插入和删除操作:

void add(int index,E element):

将给定的元素插入到指定位置,原位置及兴许元素都顺序向后移动。

E remove(int index):

删除给定位置的元素。并将被删除的元素返回。

get和set方法:

List除了继承Collection定义的方法外,还依据其线性表的数据结构定义了一系列方法,当中最经常使用的就是get和set

E get(int index):获取集合中指定下标相应的元素。下标从0開始。

E set(int index, E elment):将给定的元素存入给定位置,并将原位置的元素返回。

public class ListDemo {

    public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("python");
list.add("c#");
list.add("script");
//获取list中第一个元素
String str = list.get(0);
System.out.println(str);
//将list中下标为1的元素内容改为Android
String setOld = list.set(1, "Android");
System.out.println(list);
//打印更改前数据
System.out.println(setOld);
//删除元素。会返回已删除元素内容
String removeOld = list.remove(2);
System.out.println(list);
System.out.println(removeOld);
}
}

运行结果:

java

[java, Android, c#, script]

python

[java, Android, script]

c#

subList方法:

List的subList方法用于获取子List。

须要注意的是。subList获取的List与原List占有同样的存储空间,对子List的操作会影响的原List。

List subList(int fromIndex, int toIndex);

fromIndex和toIndex是截取子List的首尾下标(前包含,后不包含)

public class ListDemo {

    public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("python");
list.add("c#");
list.add("script"); List<String > subList = list.subList(1, 3);
System.out.println(subList); for(int i = 0; i < subList.size(); i++) {
subList.set(i,subList.get(i) +"str") ;
} System.out.println(list);
}
}

运行结果:

[python, c#]

[java, pythonstr, c#str, script]

List转换为数组:

List的toArray方法用于将集合转换为数组。

但实际上该方法是在Collection中定义的,所以全部的集合都具备这个功能。

其有两个方法:

Object[] toArray()

T[] toArray(T[] a)

public class ListDemo {

    public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("python");
list.add("c#");
list.add("script"); String [] arr = list.toArray(new String[list.size()]);
for(String itArr : arr) {
System.out.print(itArr+" ");
}
}
}

运行结果:

[Ljava.lang.String;@3b95a09c

java python c# script

数组转换为List

Arrays类中提供了一个静态方法asList,使用该方法我们能够将一个数组转换为相应的List集合。

其方法定义为:

static List asList

public class ListDemo {

    public static void main(String[] args) {
String [] arr = new String[] {"one","two","three","four"};
List<String> asList = Arrays.asList(arr);
//报错。转换后的数组不能加入删除元素
// asList.add("python");
// asList.remove(0);
String old = asList.set(0, "python");
System.out.println(asList);
System.out.println(old); }
}

运行结果:

[python, two, three, four]

one

总结:使用List的时候要注意ArrayList和LinkedList的特性,ArrayList更适合遍历和查找。而LinkedList更适合进行改动和增删等操作。

Java List具体解释的更多相关文章

  1. java常用英文解释

    java常用名词解释: OO: object-oriented ,面向对象 OOP:object-oriented programming,面向对象编程 Author:JCC Object:对象JDK ...

  2. Java多线程具体解释

    Java多线程具体解释 多线程简单介绍 概述 多线程(multithreading).是指从软件或者硬件上实现多个线程并发运行的技术.具有多线程能力的计算机因有硬件支持而可以在同一时间运行多于一个线程 ...

  3. Java到底是解释型还是编译型语言

    Java到底是解释型还是编译型语言? 定义 回答这个问题,我们首先来看下概念: 开发人员编写代码,语言是人类可理解的方式,是具有语义的,然而计算机无法理解和执行,因此需要做一层转换. 解释型语言: 运 ...

  4. Java keyword具体解释

    訪问控制修饰符号 1)        private 私有的 private keyword是訪问控制修饰符,能够应用于类.方法或字段(在类中声明的变量). 仅仅能在声明 private(内部)类.方 ...

  5. JAVA Calendar具体解释

    (在文章的最后,将会介绍Date类,假设有兴趣,能够直接翻到最后去阅读) 到底什么是一个 Calendar 呢?中文的翻译就是日历,那我们立马能够想到我们生活中有阳(公)历.阴(农)历之分.它们的差别 ...

  6. 微信公众平台java开发具体解释(project代码+解析)

    说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...

  7. 用java字节码解释i++和++i(转)

    这几天抽着一些时间,把Java的class文件结构研究了一下,再后来就想起了这个令人厌烦的问题,想从字节码指令的角度看看,java到底是怎么处理这个的 先看一段java代码 package bishi ...

  8. 一个Java例子,解释清楚注解的作用

    原文出处:码农登陆 写在前面 今天聊的是注解,但其实单纯说注解,注解本身没有任何的作用.简单说和注释没啥区别,而它有作用的原因是:注解解释类,也就是相关对代码进行解释的特定类.一般这些类使用反射是可以 ...

  9. java线程具体解释

    线程与进程的差别 (1)程序是一段静态的代码,进程是程序的一次动态执行过程.它是操作系统资源调度的基本单位.线程是比进程更小的执行单位.一个进程在其执行过程中,能够产生多个线程.所以又称线程为&quo ...

  10. java泛型具体解释

    为什么引入泛型 bug是编程的一部分,我们仅仅能尽自己最大的能力降低出现bug的几率,可是谁也不能保证自己写出的程序不出现不论什么问题. 错误可分为两种:编译时错误与执行时错误.编译时错误在编译时能够 ...

随机推荐

  1. POJ3668 Game of Lines

     Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6791   Accepted: 2523 Description Farm ...

  2. poj 2079 Triangle (二维凸包旋转卡壳)

    Triangle Time Limit: 3000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Stat ...

  3. Synthesis of memory barriers

    A framework is provided for automatic inference of memory fences in concurrent programs. A method is ...

  4. Linux SPI总线和设备驱动架构之一:系统概述【转】

    转自:http://blog.csdn.net/droidphone/article/details/23367051/ 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 硬 ...

  5. XAudio2播放PCM

    XAudio2 是一个跨平台的API,在Xbox 360及Windows中得到支持.在Xbox 360上, XAudio2作为一个静态库编译到游戏可执行文件中.在Windows上,XAudio2提供一 ...

  6. 加密中的salt是啥意思

    今天在stackoverflow上查看python的md5的问题,提到,除了简单的加密外,还可以加入一点salt 啥意思?百度一下看到:(https://zhidao.baidu.com/questi ...

  7. Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度

    Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下 1.首先贴出布局代码 activity_main.xml: <?xml version="1 ...

  8. AC日记——魔法少女LJJ bzoj 4399

    魔法少女LJJ 思路: 动态开点权值线段树+启发式合并: 来,上代码: #include <cmath> #include <cstdio> #include <cstr ...

  9. 程序员面试京东前端,现场JavaScript代码写出魔方特效

    程序员面试京东前端,现场JS代码写出魔方特效,成功搞定20K月薪 今天小编我逛论坛,看到了一位程序员小伙子,因为是有了两年工作经验,然后去京东面试前端岗,一面二面轻松就过了,到了技术面这一块,小伙干脆 ...

  10. CF988 C. Equal Sums【map+pair/hash/任选两个序列,两个序列都除去他们中的一个数,使的总和相同】

    [链接]:CF988C [题意]:在n个序列中任选两个序列,两个序列都除去他们中的一个数,使的总和相同 [分析]:map<int,pair<int,int> > mp,从0~m ...