List的自动增长可以改变吗

问题描述

我对下面的说法有的问题:如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,List是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。如果,我要是增加List是原来的50%可以修改我增加List是原来的70%这样的方法或别的什么不?

解决方案

解决方案二:
请用标准中文发问goodluck
解决方案三:
看看这是什么啊
解决方案四:
不可以,List的主要实现类ArrayList并没有提供增长量这样一个参数,可以参见ArrayList源代码
解决方案五:
举个例子你想知道List接口的实现类ArrayList中关于存储空间不够时是怎么处理的吗?/***Increasesthecapacityofthis<tt>ArrayList</tt>instance,if*necessary,toensurethatitcanholdatleastthenumberofelements*specifiedbytheminimumcapacityargument.**@paramminCapacitythedesiredminimumcapacity*/publicvoidensureCapacity(intminCapacity){modCount++;intoldCapacity=elementData.length;if(minCapacity>oldCapacity){ObjectoldData[]=elementData;intnewCapacity=(oldCapacity*3)/2+1;//增加多大?就是这么大。if(newCapacity<minCapacity)newCapacity=minCapacity;//minCapacityisusuallyclosetosize,sothisisawin:elementData=Arrays.copyOf(elementData,newCapacity);}}

这个是它底层实现的扩容算法,API中没有提供修改的方法。
解决方案六:
不能自己修改Sun提供的API可以考虑按照List接口的实现类,自行扩展一个类似的列表
解决方案七:
继承Controller,自已写个这样的类吧。
解决方案八:
LZ自己扩展一下ArrayList实现上面的方法不就可以了

时间: 2024-11-03 21:46:28

List的自动增长可以改变吗的相关文章

SQL jdbc解决自动自动增长列统一处理问题纪实

sql|解决|问题 sql server2005 jdbc解决自动自动增长列统一处理问题纪实 作者fbysssmsn:jameslastchina@hotmail.com  blog:blog.csdn.net/fbysss声明:本文由fbysss原创,转载请注明出处 关键字:自动增长列,jdbc,sqlserver2005 背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式问题1:insert+select方案sqlserver2000可以使用insertSql  +

业务单号自动增长的处理办法

问题:在实际业务处理中有些单号需要自动增长,但又不能用自增列代替      eg:  P031106001   -- 第一位P表示采购单,031106表示日期,后三位是流水号. /* 1:创建测试用的表结构 */create table tablename(pono char(10),b int)go/* 2:创建一个得到当前日期的视图,为下面的自字义函数作准备 */create view vGetdateas  select getdate() as todaygo/* 3:用自定义函数来得到

Oracle中实现自动增长列

oracle --在users表的userid列上实现自动增长列--需要同时使用序列和行级触发器 create sequence seq_userid;   --创建序列 create or replace trigger users_bir  --创建行级触发器before insert on usersfor each rowdeclare  tempnum number;begin  select seq_userid.nextval into tempnum from dual;  :n

ORACLE没有自动增长的数据类型

oracle|数据|数据类型 ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段.     CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1  START  WITH  1 MAXVALUE  99999  CYCLE  NOCACHE;    其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999    INSERT 语句插入这个字段值

Sql Server中如何实现主键由字母数字组成并按照数字自动增长

在SQL SERVER 中如果我们想要使主键按照一定规则自动增长我们可以这样做: 这里我们新建一张研究表,里面有研究ID,研究人员姓名和研究医院. 我们使SicentificId 设为主键 并且从1开始每次递加1. 这里要更各位强调一下使用Identity 关键字的前提要求是 数据类型必须为 int ,decimal,bigint,smallint等数值类型. 但是很多时候只有一个数字编号并不能满足我们的要求, 这里笔者的需求就是编号要按照字母加数字的组合,并且字母固定且数字每次递增1. 那么我

SQL Server自动增长过大的问题

一.背景 我们遇到的问题如下图所示:自动增长无端端就按照这样的比例进行增长: (Figure1:问题所在) 尝试使用SSMS修改自动增长值,就会出现下面的错误: (Figure2:错误信息) 遇到上面的问题,我们需要解决两个问题: 1. 把数据文件收缩到一定范围内的值,腾出磁盘空间: 2. 重新设置自动增长的值,可以按照百分比,也可以使用指定的空间大小,我个人倾向使用n*1024M这样的值,仅供参考: 3. 如果有需要你也可以进行日志文件的收缩: 二.解决过程 1. 使用下面的脚本修改自动增长的

在Mysql,SqlServer及Oracle中设置主键自动增长

1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values("name1"),("name2"); select id from customers;

sql server2005 jdbc解决自动增长列统一处理问题纪实

背景:系统要支持多种数据库,统一insert的时候获取自动增长列的处理方式 问题1:insert+select方案 sqlserver2000可以使用insertSql + SELECT @@IDENTITY AS 'Identity'的方式来获得,但是mysql则只能使用executeUpdate(insertSql); executeQuery('SELECT last_insert_id() ')这样的方式,否则会抛出异常:java.sql.SQLException: Can not is

Oracle数据库自动增长列的实现过程

◆1.创建序列 -- Create sequence create sequence INNERID minvalue 1 maxvalue 99999999999999 start with 1 increment by 1 cache 20 order; ◆2.--INNERID.currval 指当前序列 --INNERID.nextval 指下一个序列 insert into admin values (INNERID.nextval,'a'); insert into admin va