javaList容器中容易忽略的知识点

在集合类框架中,List是使用比较多的一种

List

 |---Arraylist  内部维护的是一个数组,查找快增删慢

 |---LinkedList  底层是链表,增删快查询慢。

 |---Vctor线程安全的现在已经不用。

我们知道任何集合都可以返回迭代器,这里的list也是的,但是list可以返回list庄永迭代器,ListIterator。这都不是要说的重点,要是的重点在下面。

  1、假如说我们现在有一个list,然后我们获取list的Iterator了。如果没有使用it.next(),就直接使用remove方法的话,那么就会报错

  2、对于 Iterator 的子接口ListIterator 在迭代list 集合时,还可以对元素进行添加add(obj)),修改set(obj)的操作。

要说的内容看下面一段代码:

 1 public void test() throws Exception {
 2
 3         ArrayList list = new ArrayList();
 4         // 增加:add() 将指定对象存储到容器中
 5         list.add("计算机网络");
 6         list.add("现代操作系统");
 7         list.add("java编程思想");
 8         list.add("java核心技术");
 9         list.add("java语言程序设计");
10         System.out.println(list);
11
12         ListIterator lit = list.listIterator();
13         lit.next(); // 计算机网络
14         lit.next(); // 现代操作系统
15         System.out.println(lit.next()); // java编程思想
16         //用指定元素替换 next 或 previous 返回的最后一个元素
17         lit.set("平凡的世界");// 将java编程思想替换为平凡的世界,如果这里使用的是lit.add的话,将会在"java编程思想"后面添加一个“平凡的世界”
18         System.out.println(list);
19     }

输出的内容将会是:

[计算机网络, 现代操作系统, java编程思想, java核心技术, java语言程序设计]
java编程思想
[计算机网络, 现代操作系统, 平凡的世界, java核心技术, java语言程序设计]

3、使用ListIterator实现倒序输出

 1 import java.util.ArrayList;
 2 import java.util.ListIterator;
 3
 4 public class Demo2 {
 5     public static void main(String[] args) {
 6         ArrayList list = new ArrayList();
 7         // 增加:add() 将指定对象存储到容器中
 8         list.add("计算机网络");
 9         list.add("现代操作系统");
10         list.add("java编程思想");
11         list.add("java核心技术");
12         list.add("java语言程序设计");
13         System.out.println(list);
14         // 获取List专属的迭代器
15         ListIterator lit = list.listIterator();
16         while (lit.hasNext()) {
17             String next = (String) lit.next();
18             System.out.println(next);
19         }
20         System.out.println("***************");
21         while (lit.hasPrevious()) {
22             String next = (String) lit.previous();
23             System.out.println(next);
24         }
25
26     }
27 }
时间: 2024-10-05 23:24:19

javaList容器中容易忽略的知识点的相关文章

Java编程中容易疏忽的知识点

(1)Frame与窗口事件 1.Window.Frame.Dialog和FileDialog都属于有边框容器,他们的父类为Window,但是Window本身属于无边框的,算是有边框容器的一个例外. 2.Frame可以作为一个Application的最外层容器,也可以被其他容器创建并弹出成为独立的容器,但是无论哪种情况,Frame都作为最顶层容器的存在,不能被其他容器所包含. 3.新创建的Frame是不可见的.需要使用setVisible(true)方法使其可见. 4.每个Frame在其右上角都有

.NET程序在Linux容器中的演变

原文链接:https://dzone.com/articles/the-evolution-of-a-linux-container 现在,.NET开发人员可以无障碍地使用如Docker这样的Linux容器,那么让我们来尝试如何以正确的方式配置一个容器. 可能,文章的标题改成"Linux容器开发人员的演变"会更好.由于.NET可在Linux(以及Windows和macOS)上运行,所以整个世界的Linux容器和微服务已经开放给了.NET开发人员. 有着大量的开发人员,长期的运行记录和优

容器中的JVM资源该如何被安全的限制?

前言Java与Docker的结合,虽然更好的解决了application的封装问题.但也存在着不兼容,比如Java并不能自动的发现Docker设置的内存限制,CPU限制. 这将导致JVM不能稳定服务业务!容器会杀死你JVM进程,而健康检查又将拉起你的JVM进程,进而导致你监控你的pod一天重启次数甚至能达到几百次. 我们希望当Java进程运行在容器中时,java能够自动识别到容器限制,获取到正确的内存和CPU信息,而不用每次都需要在kubernetes的yaml描述文件中显示的配置完容器,还需要

spring在IoC容器中装配Bean详解

1.Spring配置概述 1.1.概述 Spring容器从xml配置.java注解.spring注解中读取bean配置信息,形成bean定义注册表: 根据bean定义注册表实例化bean: 将bean实例放入bean缓存池: 应用程序使用bean. 1.2.基于xml的配置 (1)xml文件概述 xmlns------默认命名空间 xmlns:xsi-------标准命名空间,用于指定自定义命名空间的schema文件 xmlns:xxx="aaaaa"-------自定义命名空间,xx

Java中SSM框架全面知识点,业务时间的精神食粮

------------------异常问题 :出现重复定义了访问路径java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'userController' bean method 406 请求头和响应头不匹配做ajax注册的时候 出现的问题 ClassNotFindException说明缺少jar包 或者名字写错 NoSuchBeanDefinitionException 如果BeanFactory在Sprin

组件在容器中的布局

1,FlowLayout管理器 流式布局管理器,组件按照从左到右的流式顺序布局,JPanel组件中的默认布局管理器. 2,BorderLayout管理器 边框布局管理器,将容器分为东西南北中五个区域,每个区域只能添加一个组件,该组件的大小由其所在的区域决定.它是JFrame中的默认布局管理器. 3,GridLayout管理器 网格布局管理器,将容器分为行列的网格. 4,BoxLayout管理器 盒式布局管理器,组件安装垂直或者水平方式显示. 组件在容器中的布局,码迷,mamicode.com

如何设置Docker容器中Java应用的内存限制

如果使用官方的Java镜像,或者基于Java镜像构建的Docker镜像,都可以通过传递 JAVA_OPTS 环境变量来轻松地设置JVM的内存参数.比如,对于官方Tomcat 镜像,我们可以执行下面命令来启动一个最大内存为512M的tomcat实例 docker run --rm -e JAVA_OPTS='-Xmx512m' tomcat:8 在日志中,我们可以清楚地发现设置已经生效 "Command line argument: -Xmx512m" 02-Apr-2016 12:46

非阻塞算法在并发容器中的实现【转】

转自:https://www.ibm.com/developerworks/cn/java/j-lo-concurrent/ 非阻塞算法在 Java 中的应用越来越广泛 , ConcurrentLinkedQueue 是 java. concurrent 包中基于非阻塞算法实现的并发容器的典范.通过本文,您将了解非阻塞算法的工作原理及其在 ConcurrentLinkedQueue 中的具体实现机制. 简介 非阻塞算法在更细粒度的层面协调争用,它比传统的锁有更高的并发性.随着非阻塞算法在 Jav

在Linux和Windows的Docker容器中运行ASP.NET Core

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇到了. 不过首先,对于不熟悉的朋友我还是来解释一下Linux容器和Windows容器的概念. 由于容器成为虚拟化和应用托管的一种不可避免的选项,Windows也开始为公众提供容器功能(其实微软具备和使用