「java集合元素扩大」java集合的大小
本篇文章给大家谈谈java集合元素扩大,以及java集合的大小对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java中将数组的长度扩大1的方法,有吗
java中没有关于修改数组长度的api,在此提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength()。
import java.lang.reflect.Array;
/**
* Description: This class is used to adjust array length.
* @author pieryon
*/
public class ArrayTest {
/**
* @param args
*/
public static void main(String[] args) {
int a[]= new int[]{0,1,2,3,4,5};
int b[]= new int[]{0,1,2,3,4,5};
a = (int[]) arrayAddLength(a,2);
b = (int[]) arrayReduceLength(b,2);
//out print array lenght
System.out.println(a.length);
for (int i=0;ia.length;i++){
System.out.print(a[i]);
}
System.out.println();
System.out.println(b.length);
for (int i=0;ib.length;i++){
System.out.print(b[i]);
}
}
/**
* Description: Array add length
* @param oldArray
* @param addLength
* @return Object
*/
public static Object arrayAddLength(Object oldArray,int addLength) {
Class c = oldArray.getClass();
if(!c.isArray())return null;
Class componentType = c.getComponentType();
int length = Array.getLength(oldArray);
int newLength = length + addLength;
Object newArray = Array.newInstance(componentType,newLength);
System.arraycopy(oldArray,0,newArray,0,length);
return newArray;
}
/**
* Description: Array reduce lenght
* @param oldArray
* @param reduceLength
* @return Object
*/
public static Object arrayReduceLength(Object oldArray,int reduceLength) {
Class c = oldArray.getClass();
if(!c.isArray())return null;
Class componentType = c.getComponentType();
int length = Array.getLength(oldArray);
int newLength = length - reduceLength;
Object newArray = Array.newInstance(componentType,newLength);
System.arraycopy(oldArray,0,newArray,0,newLength);
return newArray;
}
}
java集合为什么不等容量满了再扩容
你理解错了,比如那些底层是树或者链的永远不会满,它扩容是为了效率。你看底层代码才能理解,你需要改变以前的认知。只有那些底层是数组的才会有确定容量。
java集合的通用方法有哪些
map集合,对象以键值对的形式存放在集合中,并且键它是不允许重复的。常用的实现是HashMap和TreeMap,HashMap能够快速的查询到一个键,而TreeMap则是对键按序存放的。
list接口是对collection的扩充,它允许存放相同的元素。常用的有2种实现类,ArrayList和LinkedList。ArraryList是一种以数组形式存放元素的集合,更适合于做查询,而LinkedList内部实现链表,适合做增删元素操作。
set接口同样是对collection的扩充,它不允许存放相同的元素。常用类HashSet和TreeSet.HashSet主要能够快速定位到一个元素,需要用到HashCode()方法,而TreeSet类中可以实现对元素的排序。
Java中集合类的区别,请高手详解
ArrayList 实现List接口 ,随着向 ArrayList 中不断添加元素,其容量也自动增长
Vector向量 不过我是不太喜欢这个类
HashMap实现Map接口--可以说内存就是一个HashMap
HashTable实现一个哈希表,该哈希表将键映射到相应的值
Set一个不包含重复元素的容器
HashMap, HashTable都是“Key-Value对”形式的
Vector和ArrayList区别
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
Hashtable和HashMap的区别
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
ArrayList和LinkedList的区别
对于处理一列数据项,Java提供了两个类ArrayList和LinkedList, ArrayList的内部实现是基于内部数组Object[], 所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别。
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列 数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能
而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
如果在编程中,1,2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。
配置集合类的初始大小
在Java集合框架中的大部分类的大小是可以随着元素个数的增加而相应的增加的,我们似乎不用关心它的初始大小,但如果我们考虑类的性能问题时,就一定要考虑尽可能地设置好集合对象的初始大小,这将大大提高代码的性能。
比如,Hashtable缺省的初始大小为101,载入因子为0.75,即如果其中的元素个数超过75个,它就必须增加大小并重新组织元素,所以,如果你 知道在创建一个新的Hashtable对象时就知道元素的确切数目如为110,那么,就应将其初始大小设为110/0.75=148,这样,就可以避免重 新组织内存并增加大小。
java集合元素扩大的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java集合的大小、java集合元素扩大的信息别忘了在本站进行查找喔。
发布于:2022-12-19,除非注明,否则均为
原创文章,转载请注明出处。