java list用法_Java List 用法详解及实例分析

Java List 用法详解及实例分析

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解。

List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引

ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步

LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)

Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了)

List:特有的方法,凡是可以操作角标的方法都是该体系特有的方法

boolean add(int index, E element)

boolean addAll(index,Collection)

public static void List_add(){

ArrayList a1 = new ArrayList();

a1.add("java");

a1.add("php");//List集合中的元素可以重复

a1.add(".net");

System.out.println("原集合:"+a1);

a1.add(1, "Flash");

a1.add(0, "ps");

System.out.println(a1);

ArrayList a2 = new ArrayList();

a2.add("javascript");

a2.add("3dMax");

a2.add("IBM");

a1.addAll(0, a2);

System.out.println(a1);

}

删除指定位置的元素

boolean remove(int index)

public static void List_remove(){

ArrayList a1 = new ArrayList();

a1.add("javascript");

a1.add("php");

a1.add("flash");

System.out.println("原集合:"+a1);

a1.remove(0);

System.out.println(a1);

}

修改指定角标的元素  set(int index, E element)  返回的是修改的那个元素

public static void List_set() {

ArrayList a1 = new ArrayList();

a1.add("javascript");

a1.add("php");

a1.add(".net");

System.out.println("原集合:"+a1);

a1.set(1, "falsh");

System.out.println(a1);

}

get(int index) 返回列表中指定位置的元素

subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分元素。

public static void List_get() {

ArrayList a1 = new ArrayList();

a1.add("java");

a1.add("php");

a1.add("flash");

System.out.println(a1.get(0));//获取指定角标的元素,有了该方法就可以遍历该集合中的所有元素

System.out.println(a1.subList(1, 3));//获取集合中某一部分的元素,包含头不包含尾

}

List集合特有的迭代器:ListIterator(是Iterator的子接口)

注意:

在迭代时,是不可以通过集合对象的方法操作集合中的元素因为会发生ConcurrentModificationException异常(并发异常)所以,在迭代器时,只能用迭代器的方法造作元素因为Iterator方法是有限的所以只能对元素进行判断,取出,删除的操作如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator 该接口只能通过List集合的listIterator方法获取

public class ListIteratorDemo {

public static void main(String[] args) {

ArrayList a1 = new ArrayList();

a1.add("java01");

a1.add("java02");

a1.add("java03");

a1.add("java04");

System.out.println("原集合是:"+a1);

/*在迭代过程中准备添加或者删除元素

Iterator it = al.iterator();

while (it.hasNext()){

Object obj = it.next();

if (obj.equals("java02"))

//al.add("java008");//会出现并发异常,因为迭代器正在操作集合,不能再用集合的方法操作集合了

it.remove();//将java02的引用从集合中删除了

System.out.println("obj:"+obj);

}

*/

//只有List的listIterator有增,删,改,查这些功能,因为只有List有索引

ListIterator li = a1.listIterator();

while (li.hasNext()){

if(li.next().equals("java02"))

//li.add("java009");

li.set("java006");

}

}

}

Vector:枚举就是Vector特有的取出方式,跟迭代器很像(其实枚举和迭代是一样的) 已经被迭代器取代

public class VectorDemo {

public static void main(String[] args) {

Vector v = new Vector();

v.add("java01");

v.add("java02");

v.add("java03");

v.add("java04");

for(Enumeration en = v.elements();en.hasMoreElements();){

System.out.println(en.nextElement());

}

}

}

LinkedList:

特有方法:

addFirst();在头部添加元素

addLast();在尾部添加元素

getFirst(); getLast();

获取元素但不删除元素。如果集合中没有元素,会出现NoSuchElementException

removeFirst();   removeLast();

获取元素但是删除元素。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法

offerFirst(); offerLast();

peekFirst(); peekLast(); 获取元素,但是元素不被删除。如果集合中没有元素,会返回null

pollFirst(); pollLast(); 获取元素,但是元素被删除。如果集合中没有元素,会返回null

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList link = new LinkedList();

link.add("java01");

link.add("java02");

link.add("java03");

link.add("java04");

while(!link.isEmpty()){

System.out.println((link.removeLast()));

}

}

}

以上就是对java list用法的实例详解,本站关于java 的开发文章还有很多,希望大家搜索参考,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python字符串和List:索引值以 0 为开始值,-1 为从末尾的开始位置;值和位置的区别哦...

String(字符串)Python中的字符串用单引号 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。 字符串的截取的语法格式如下: 变量[头下标:尾下标]索引值以 0 为开始值,-1 为从末尾的开始位置。[一个是值&#x…

逻辑回归 python_深入研究Python的逻辑回归

逻辑回归 pythonClassification techniques are an essential part of machine learning and data science applications. Approximately 70% of problems in machine learning are classification problems. There are lots of classification problems that are available, b…

spring定时任务(@Scheduled注解)

(一)在xml里加入task的命名空间 xmlns:task"http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd(二)启用注…

net user 用户名 密码 /add 建立用户

net user 用户名 密码 /add 建立用户 other: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映…

JavaScript是如何工作的:与WebAssembly比较及其使用场景

*摘要:** WebAssembly未来可期。 原文:JavaScript是如何工作的:与WebAssembly比较及其使用场景作者:前端小智Fundebug经授权转载,版权归原作者所有。 这是专门探索 JavaScript及其所构建的组件的系列文章的第6篇。 如果…

友元 java_C++ 友元关系详解

在C中,在某些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,这是很方便做到的。例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。这些操作符…

Matplotlib中的“ plt”和“ ax”到底是什么?

Indeed, as the most popular and fundamental data visualisation library, Matplotlib is kind of confusing in some perspectives. It is usually to see that someone asking about的确,作为最受欢迎的基础数据可视化库,Matplotlib在某些方面令人困…

【数据库的备份与还原】 .

差异备份,日志备份还原 IF DB_ID(db) IS NOT NULL DROP DATABASE db GO CREATE DATABASE db GO CREATE TABLE db.dbo.T(ID INT PRIMARY KEY IDENTITY(1,1)); GO BACKUP DATABASE db TO DISKd:/1.bak WITH FORMAT GO INSERT INTO db.dbo.T DEFAULT VALUES GO BACKUP DATAB…

方法 数组

方法的特点: 定义方法可以将功能代码进行封装 封装:两方面含义: 1.将有特定逻辑的多条代码组合成一个整体!! 2.方便维护,提高代码的复用性(联想变量的作用域问题) 方法只有被调用才会被执行!!(方法调用的流程) 方法的重载: 两同一不同: 同类,同方法名 形参列表不同 …

java 控制jsp_JSP学习之Java Web中的安全控制实例详解

普通用户界面修改登录的Servlet,修改后的代码如下:LoginProcess.java代码:package servlet;import javabean.User;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.Ser…

PHP 基础 自动类型转换之比较运算符

<?php var_dump( 123fg456>122); var_dump(some string 0); var_dump(123.0 123d456); var_dump(0 "a"); var_dump("1" "01"); var_dump("1" "1e0"); 当数字与字符串进行比较运算时&#xff0c;字符串会自动转…

java的多线程访问共享变量_java多线程通信之共享变量

(1)当访问共同的代码的时候&#xff1a;可以使用同一个Runnable对象&#xff0c;这个Runnable对象中有这个共享数据&#xff0c;比如卖票系统就可以这么做。或者这个共享数据封装在一个对象当中&#xff0c;然后对这个对象加锁&#xff0c;也可以实现数据安全访问。public clas…

2018年阿里云NoSQL数据库大事盘点

2019独角兽企业重金招聘Python工程师标准>>> NoSQL一词最早出现在1998年。2009年Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论&#xff0c;来自Rackspace的Eric Evans再次提出了NoSQL概念&#xff0c;这时的NoSQL主要是指非关系型、分布式、不提供…

cayenne:用于随机模拟的Python包

TL;DR; We just released v1.0 of cayenne, our Python package for stochastic simulations! Read on to find out if you should model your system as a stochastic process, and why you should try out cayenne.TL; DR; 我们刚刚发布了 cayenne v1.0 &#xff0c;这是我们…

java 如何将word 转换为ftl_使用 freemarker导出word文档

近日需要将人员的基本信息导出&#xff0c;存储为word文档&#xff0c;查阅了很多资料&#xff0c;最后选择了使用freemarker&#xff0c;网上一共有四种方式&#xff0c;效果都一样&#xff0c;选择它呢是因为使用简单&#xff0c;再次记录一下,一个简单的demo&#xff0c;仅供…

DotNetBar office2007效果

1.DataGridView 格式化显示cell里的数据日期等。 进入编辑列&#xff0c;选择要设置的列&#xff0c;DefaultCellStyle里->行为->formart设置 2.tabstrip和mdi窗口的结合使用给MDI窗口加上TabPage。拖动个tabstrip到MDI窗口上tabstrip里选择到主窗口名就加上TABPAGE了。d…

Spring boot 中pom.xml 各个节点详解

<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-- 父项目的坐…

spotify 数据分析_没有数据? 没问题! 如何从Wikipedia和Spotify收集重金属数据

spotify 数据分析For many data science students, collecting data is seen as a solved problem. It’s just there in Kaggle or UCI. However, that’s not how data is available daily for working Data Scientists. Also, many of the datasets used for learning have …

stack 的一些用法

#include<bits/stdc.h> using namespace std; int32_t main() {stack<int> st;st.push(1);st.push(2);st.push(3);cout<<st.size()<<endl;while(!st.empty()){cout<<st.top()<<endl;st.pop();} } 转载于:https://www.cnblogs.com/Andromed…

IS环境下配置PHP5+MySql+PHPMyAdmin

IIS环境下配置PHP5MySqlPHPMyAdmin Posted on 2009-08-07 15:18 谢启祥 阅读(1385)评论(18) 编辑 收藏 虽然主要是做.net开发的&#xff0c;但是&#xff0c;时不时的还要搞一下php&#xff0c;但是&#xff0c;php在windows下的配置&#xff0c;总是走很多弯路&#xff0c;正好…