老紫竹JAVA提高教程(7)-认识List列表之ArrayList

深度强化学习系列(13): 策略梯度(Policy Gradient) 对于DQN来说使用一个网络直接逼近了值函数,最后取得了非常不错的效果, 但是对于一些连续性控制或者动作空间特别大的环境来说,很难全部计算所有的值函数来得到最好的策略,那么直接计算策略的方法就别提出来了。 回顾一下前面几篇,所谓的策略,其实就是状态到动作的映射数学表达为 π:s→aπ:s→a\pi : s \to a, 我们用ττ\tau 表示状态s到最后一个状态的一个序列,表示为: τ:st... 阅读详情

 

原文地址:http://www.java2000.net/p11888

 

ArrayList是List里面使用率最高的。

  1. package collection.lession7;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Collection;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. /**
  8.  * 老紫竹JAVA提高教程(7)-认识List列表之ArrayList<br>
  9.  * 
  10.  * @author 老紫竹 JAVA世纪网(java2000.net)
  11.  * 
  12.  */
  13. public class Lession7 {
  14.   public static void main(String[] args) {
  15.     testNormal();
  16.     testSpecial();
  17.     // 一个最常见的错误
  18.     testForProblem();
  19.   }
  20.   public static void testNormal() {
  21.     // -------------------------------------------------------
  22.     // 声明一个列表
  23.     // 允许放入任何数据
  24.     // -------------------------------------------------------
  25.     ArrayList list = new ArrayList();
  26.     // 放入整数
  27.     // 当然你用 new Integer(1)也可以
  28.     list.add(1);
  29.     // 放入字符串
  30.     list.add("abc");
  31.     // 放入浮点数
  32.     list.add(new Float(1.11));
  33.     // add会将数据保存到列表的尾部
  34.     showList(list); // 1, abc, 1.11]
  35.     // 下面我们在列表的头部增加数据
  36.     list.add(0, 2);
  37.     list.add(0, "bcd");
  38.     list.add(0, new Double(2.34));
  39.     // 列表可以指定插入的位置
  40.     // 0 是头部第一个位置,所以数据都逐个放到最前面了
  41.     showList(list); // [2.34, bcd, 2, 1, abc, 1.11]
  42.     // 下面我们插入到我们希望的任何位置
  43.     // 当然不能越界,(0 到 list.size()-1)范围内才可以
  44.     list.add(1, 3);
  45.     list.add(4, "xyz");
  46.     // 数据被放到了正确的位置
  47.     showList(list); // [2.34, 3, bcd, 2, xyz, 1, abc, 1.11]
  48.     // -------------------------------------------------------
  49.     // 我们有了数据,我们来测试读取数据
  50.     // -------------------------------------------------------
  51.     // 我们可以通过指定索引的位置,来拿到我们希望的数据
  52.     System.out.println(list.get(0)); // 2.34
  53.     System.out.println(list.get(4)); // xyz
  54.     // -------------------------------------------------------
  55.     // 测试是否存在某个数据
  56.     // -------------------------------------------------------
  57.     System.out.println(list.contains("xyz")); // true
  58.     // 测试是否包含一组数据
  59.     Collection c = new ArrayList();
  60.     c.add(1);
  61.     c.add(2);
  62.     System.out.println(list.containsAll(c)); // true
  63.     c.add(3);
  64.     c.add(4);
  65.     // containsAll_1234=false
  66.     System.out.println(list.containsAll(c)); // false
  67.     // -------------------------------------------------------
  68.     // 查找某个数据所在的索引位置
  69.     // 如果不存在,返回-1
  70.     // -------------------------------------------------------
  71.     System.out.println(list.indexOf(3)); // 1
  72.     System.out.println(list.indexOf("xyz")); // 4
  73.     System.out.println(list.indexOf("abcd")); // -1
  74.     // -------------------------------------------------------
  75.     // 测试删除数据
  76.     // 请注意,
  77.     // 如果你使用整数(int)数字,则默认调用的是remove(int index);
  78.     // 如果你用 long,则会调用 remove(Object obj);
  79.     // 所以如果你要删除整数,请使用 remove(new Integer(int));
  80.     // -------------------------------------------------------
  81.     // 删除索引为1的数据
  82.     list.remove(1);
  83.     // 索引为1的数据被干掉了
  84.     showList(list); // [2.34, bcd, 2, xyz, 1, abc, 1.11]
  85.     // 删除数字1 和字符串 abc
  86.     list.remove(new Integer(1));
  87.     list.remove("xyz");
  88.     showList(list); // [2.34, bcd, 2, abc, 1.11]
  89.     // -------------------------------------------------------
  90.     // 迭代器的使用
  91.     // -------------------------------------------------------
  92.     Iterator it = list.iterator();
  93.     while (it.hasNext()) {
  94.       System.out.print(it.next() + " "); // 2.34 bcd 2 abc 1.11
  95.     }
  96.     System.out.println();
  97.     // -------------------------------------------------------
  98.     // 转化为数组
  99.     // -------------------------------------------------------
  100.     Object[] objs = list.toArray();
  101.     for (Object obj : objs) {
  102.       System.out.print(obj + " "); // 2.34 bcd 2 abc 1.11
  103.     }
  104.     System.out.println();
  105.   }
  106.   public static void testSpecial() {
  107.     // -------------------------------------------------------
  108.     // 测试重复和null
  109.     // -------------------------------------------------------
  110.     //
  111.     List<Integer> list = new ArrayList<Integer>();
  112.     list.add(123);
  113.     list.add(456);
  114.     list.add(123);
  115.     list.add(456);
  116.     // 数据允许重复
  117.     showList(list); // [123, 456, 123, 456]
  118.     list.add(null);
  119.     list.add(789);
  120.     list.add(null);
  121.     list.add(999);
  122.     // 允许放入多个null
  123.     showList(list); // [123, 456, 123, 456, null, 789, null, 999]
  124.     // -------------------------------------------------------
  125.     // 测试一下查找最后一次出现的位置
  126.     // -------------------------------------------------------
  127.     System.out.println(list.indexOf(123)); // 0
  128.     System.out.println(list.lastIndexOf(123)); // 2
  129.     // -------------------------------------------------------
  130.     // 转化为数组
  131.     // 记得要转化为Inerger.
  132.     // -------------------------------------------------------
  133.     Integer[] nums = (Integer[]) list.toArray(new Integer[0]);
  134.     // 注意数据里面有null,所以循环变量不要用int 要用Integer
  135.     for (Integer num : nums) {
  136.       System.out.print(num + " "); // 123 456 123 456 null 789 null 999
  137.     }
  138.     System.out.println();
  139.   }
  140.   public static void testForProblem() {
  141.     // 一些朋友在向循环里向列表增加对象的时候
  142.     // 经常忘记初始化,造成最终加入的都是同一个对象
  143.     List<MyObject> list = new ArrayList<MyObject>();
  144.     MyObject obj = new MyObject();
  145.     for (int i = 1; i <= 5; i++) {
  146.       obj.setName("Name" + i);
  147.       list.add(obj);
  148.     }
  149.     // 里面的数据都是最后一个
  150.     showList(list); // [Name5, Name5, Name5, Name5, Name5]
  151.     // 正确的做法
  152.     List<MyObject> list2 = new ArrayList<MyObject>();
  153.     MyObject obj2 = null;
  154.     for (int i = 1; i <= 5; i++) {
  155.       obj2 = new MyObject();
  156.       obj2.setName("Name" + i);
  157.       list2.add(obj2);
  158.     }
  159.     // 里面的数据都是最后一个
  160.     showList(list2); // [Name1, Name2, Name3, Name4, Name5]
  161.   }
  162.   /**
  163.    * 显示List里面的数据。
  164.    * 
  165.    * @param list
  166.    */
  167.   private static void showList(List list) {
  168.     System.out.println(Arrays.toString(list.toArray()));
  169.   }
  170. }
  171. class MyObject {
  172.   private String name;
  173.   public String getName() {
  174.     return name;
  175.   }
  176.   public void setName(String name) {
  177.     this.name = name;
  178.   }
  179.   /**
  180.    * 重写toString方法,输出name
  181.    */
  182.   public String toString() {
  183.     return name;
  184.   }
  185. }
输出结果
[1, abc, 1.11]
[2.34, bcd, 2, 1, abc, 1.11]
[2.34, 3, bcd, 2, xyz, 1, abc, 1.11]
2.34
xyz
true
true
false
1
4
-1
[2.34, bcd, 2, xyz, 1, abc, 1.11]
[2.34, bcd, 2, abc, 1.11]
2.34 bcd 2 abc 1.11
2.34 bcd 2 abc 1.11
[123, 456, 123, 456]
[123, 456, 123, 456, null, 789, null, 999]
0
2
123 456 123 456 null 789 null 999
[Name5, Name5, Name5, Name5, Name5]
[Name1, Name2, Name3, Name4, Name5]
高级数据结构之R树(R-tree) R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子... 阅读详情

相关推荐

ASME B31.3-2024工艺管道标准介绍

ASME B31.3-2024《过程管道》是ASME发布的最新版工业管道标准,适用于石油、化工、制药等行业的管道系统设计、建造和维护。该版标准进行了多项重要更新,包括软管管理、应力指数调整、新增管件类型、焊接检查和泄漏测试等条款修订,并新增了书面报告要求。标准共594页,为全球过程工业提供管道安全规范,对保障管道系统完整性、可靠性具有重要意义,被多国强制采用或推荐使用。

TXNMG的博客 4719

list.add(Object object)方法详解

list.add(Object object)加入的是对象的引用!!! BookInfo bookInfo = new BookInfo(); if(resultSet.next()) { ... ... ... ... list.add(bookInfo); } 因为每次添加的都是对象的引用,所以实际上添加的引用都是指向同一个对象,而这个对象的...

Cool_Uncle的博客 5029

Fortify SCA 24.4 最新可用版

Fortify Static Code Analyzer(Fortify SCA) 是一款由 Micro Focus(原惠普旗下)开发的 静态应用安全测试(SAST)工具,专注于在软件开发早期通过分析源代码或编译后的二进制文件,识别潜在的安全漏洞、代码缺陷和合规性问题。以下是其核心特点与功能:核心功能 静态代码分析 在不运行程序的情况下,通过语法、语义分析检测代码中的安全漏洞(如 SQL 注入、跨站脚本(XSS)、缓冲区溢出等)和代码质量问题。

棉花糖的博客 3184

老紫竹的JAVA提高教程(6)-认识List列表

package collection.lession6; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Stack; import ja

xhhuang1979的专栏 839

AI应用架构师:引领半导体良率AI预测的变革浪潮

在半导体行业这个技术密集、资本密集且竞争异常激烈的领域,良率是决定企业盈利能力的关键指标。每提升1%的良率可能意味着数亿美元的利润增长。然而,随着制程节点不断缩小至3nm、2nm甚至更先进水平,传统的良率管理方法已难以应对日益复杂的制造流程和指数级增长的数据量。本文将深入探讨AI应用架构师如何成为这场变革的核心驱动力,通过设计和实施先进的AI预测系统,将半导体良率预测从传统的"事后分析"转变为"事前预测"和"实时优化"。

AI大模型应用之禅 403

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

老紫竹JAVA提高教程(6)-认识List列表

原文地址:http://www.java2000.net/p11848 列表是很常用的数据结构,感觉比Map和Set用的频率要高一些吧,因为我经常用其返回数据库的操作结果集package collection.lession6;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;impor

老紫竹的专栏 3202

ADS仿真功率放大器实例学习笔记

ADS仿真功率放大器实例学习笔记

qq_36521926的博客 1万+

老紫竹JAVA提高教程(8)-认识List列表之Vector

 Vector和ArrayList的最大区别就是Vector的主要集合方法是线程同步的。package collection.lession8;import java.util.Arrays;import java.util.Collection;import java.util.Enumeration;import java.util.Iterator;import java.util.Li

老紫竹的专栏 2653

电磁场仿真软件:Sonnet_(3).Sonnet用户界面与操作

Sonnet支持用户通过二次开发自定义工具,例如:编写Python脚本,实现自定义功能。将脚本保存为工具插件。在Sonnet中加载并使用自定义工具。# 示例:自定义工具 import sonnet def custom_tool(design , object , parameter , value) : """自定义工具示例,设置对象的指定参数。

kkchenjj的博客 1525

【Claude】权限被拒绝 (Permission Denied) 全场景排查 — 已解决

权限配置是 Claude Code 安全使用的核心机制。通过合理的 allow/deny 规则、正确的通配符使用、子代理独立配置、定期安全审计,可以在保证安全性的同时不影响开发效率。deny 优先:deny 规则优先级高于 allow,先保护敏感资源通配符精确单层匹配,**递归匹配,Bash(cmd*)允许带参数最小权限:只允许必要的操作,避免Bash(*)等危险规则CI 用 skip:Headless 模式用避免挂起子代理独立:每个子代理单独配置权限,不自动继承保护密钥:deny.env。

一键难忘的博客 3949

java list<> 使用方法_java编程教程:[1]list如何使用

import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.ListIterator;import java.util.Stack;import java.util.Vector;/*** 老紫竹JAVA提高教程(6)...

weixin_42162171的博客 698

密码学系列3-Elgamal加密及其IND-CPA安全性证明

但这没有任何影响,敌手本身就只能知道公钥,他并没有能力知道挑战者是否知道对应的私钥。所以上述整个游戏就是一个模拟实验,敌手无法区分挑战者运行的是这个模拟实验,还是真正的按照第一节的算法构造的实验(挑战者知道私钥…为什么合起来的时候有1/2:因为T既可能是随机的也可能是g^{ab},这两种情况概率为1/2。能够攻破Elgamal加密方案,那么挑战者利用敌手的能力构建下面游戏,来求解困难性问题DDH。就是挑战者选的随机数,虽然挑战者自己也不知道。),否则挑战者输出0,作为DDH的回答。

qq_41359358的博客 1251

JAVA提高教程(6)-认识List列表

列表是很常用的数据结构,感觉比Map和Set用的频率要高一些吧,因为我经常用其返回数据库的操作结果集   import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; im...

Arthur0088的专栏 176

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java中list的用法(一)

上次听学长给我讲东西,觉得学长理解的好透彻,而自己却自以为是的以为知道,原来自己根本没有真正的理解,所以决定每天都学些东西,整理出来,然后变为自己的东西,一定要坚持下去哦 import java.util.ArrayList;  import java.util.Iterator;  import java.util.LinkedList;  import ja

miscocox的专栏 701

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java 中List用法(1)

列表是很常用的数据结构,感觉比Map和Set用的频率要高一些吧,因为我经常用其返 回数据库的操作结果集 package collection.lession6; import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util...

web开发自学 683

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ArayList的一些常用法<一> 转

转:http://yy.azj.blog.163.com/blog/static/18508700320122893451389/ import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util...

weixin_30883777的博客 176

老紫竹JAVA提高教程-System.arraycopy方法的使用

 不废话,直接看代码就全清楚了。里面 // 后面的是运行的结果 import java.util.Arrays;/** * 老紫竹JAVA提高教程 - System.arraycopy方法的使用。 * * 从指定源数组中复制一个数组,复制从指定的位置开始, * 到目标数组的指定位置结束 * * @author 老紫竹的家(java2000.net,laoz

老紫竹的专栏 4万+

老紫竹JAVA提高教程-信号量(Semaphore)在生产者和消费者模式的使用

 Semaphore 信号量,就是一个允许实现设置好的令牌。也许有1个,也许有10个或更多。谁拿到令牌(acquire)就可以去执行了,如果没有令牌则需要等待。执行完毕,一定要归还(release)令牌,否则令牌会被很快用光,别的线程就无法获得令牌而执行下去了。 请仔细体会里面关于仓库的处理,1 是如何保证入库时,如果仓库满就等待,2 出库时,如果仓库无货就等待的。3

老紫竹的专栏 1万+

老紫竹JAVA基础培训(9),控制台键盘输入(System.in)

    // 这段代码用来读取键盘输入的整数    // 请注意,你需要输入合法的整数    int age = Integer.MIN_VALUE;    while (age == Integer.MIN_VALUE) {      System.out.print("请输入你的年龄:");      try {        age = scan.nextInt();      } catc

老紫竹的专栏 7254

老紫竹B/S文件管理系统(webfile 0.1版)发布

 老紫竹B/S文件管理系统=================功能介绍-------        1 全部用JSP编写        2 文集列表,支持页面排序(点击标题)        3 编辑小于指定大小的文件(默认1M)        4 上传文件        5 下载文件        安装配置-------        1 标准的W

老紫竹的专栏 5900

跟老紫竹学Java - JAVA自测题栏目正式上线,来测测你的Java功力到底如何!

题目基本上比较基础,但有一些如果不认真还是不行的。栏目地址:http://www.java2000.net/selftest/ 题目在不断的更新中。

老紫竹的专栏 5688

老紫竹JAVA提高教程(2)-认识Set集合之HashSet

原文地址:http://www.java2000.net/p11767 集合在Java里面的作用非凡,我们常用的有Set,List和Map三种,我们先熟悉一下Set,特别是HashSet的使用package collection.lession2;import java.util.HashSet;import java.util.Set;/** * 老紫竹JAVA提高教程(2)-认识Set集合之H

老紫竹的专栏 5567

老紫竹提高教程 - Java代理服务器和NTLM认证的使用

机器在局域网里面,使用了NTLM的认证,不能直接访问外网,本机也没有安装 ISA 的Client这个代码包含了2部分1 如果你使用代理服务器,那么只需要设置Properties部分就行了2 如果你使用NTML,那么用那个Authenticator 就可以了。import java.net.Authenticator;import java.net.PasswordAuthe

老紫竹的专栏 5076

跟老紫竹学Java-图书销售系统

原文地址:http://www.java2000.net/f398博客链接如下跟老紫竹学Java-图书销售系统-项目下载跟老紫竹学Java-图书销售系统-POJO类跟老紫竹学Java-图书销售系统-辅助类和配置文件跟老紫竹学Java-图书销售系统-数据库结构跟老紫竹学Java-图书销售系统-服务接口和实现跟老紫竹学Java-图书销售系统-主页,注册,登录,退出登录等常规页面跟老紫竹学Java-图书

老紫竹的专栏 4920

跟老紫竹学Java-留言板项目

本项目将提供一个可以注册,发言和回复的留言板。提供自己书写的分页功能。 提供JDBC和Hibernate两个后台版本的实现提供 JSTL和JSP的两个前台版本的实现数据库结构和POJO http://blog.youkuaiyun.com/java2000_net/archive/2008/07/20/2680146.aspx 服务接口 http://blog.youkuaiyun.com/java2

老紫竹的专栏 4504
上一篇: 今天给山东省劳动厅做迁移和测试汇报,希望顺利
下一篇: 老紫竹JavaEE基础教程说明
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值