ad

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.6 容器

admin 121 2023-10-25

【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第6节,由何为、迟文恒 编著。

1.6 容器

容器是存放对象的地方,当大量的对象需要在内存中存在,并且单个对象分别使用很不方 便的时候,就是容器应用的场景了。 Java 存放数据的方式有很多种,例如固定大小的数据以及 可以自动调整大小的容器类。而容器类经过 Java 多个版本的迭代,继承关系较为复杂,有些容 器已经建议废弃,目前比较常用的就是 List、Set、Map, 本节将一一使用它们并且了解它们的 基础用法。在介绍容器类之前先看看数组。

1.6.1 数组

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.6 容器

数组相对于容器类,效率更高9,但缺点也很明显,在生命周期内不可改变数组大小。数组 有 length 字段,用于访问数组的大小。“口”语法可以访问组数成员。数组的创建也有多种方 式,例如用 new 创建或者直接填写数组元素。数组还有多维的能力,可以创建二维以上的数 组。下面分别演示数组的这些用法。

(1)一维数组

public class JavaArray {

public static void testDirectConArray(O {

String[] strings ={"lilei","hanmeimei","lucy"};

System.out.println("array length="+ strings.length);

System.out.println(Arrays.asList(strings));

}

public static void testNewConArrayO {

Stringl] strings =new String[5];

strings[0]="A";

strings[1]="B";

strings[2]="C";

strings[3]="D";

System.out.printin("array length="+ strings.length);

System.out.println(Arrays.asList(strings));

public static void main(String[] args){

testDirectConArray(;

testNewConArray0;

运行结果如下:

array length=3

[lilei, hanmeimei,lucy]

array length=5

[A,B,C,D,null]

代码中使用了两个方法,每个方法使用不同的方式创建一维数组。在第一种方法中,采用 直接赋值的方式初始化数组,并且在打印时使用 Arrays.asList()方法将数组转化为 List 进行打 印。如果不使用此方法,可以采用直接打印的方式打印数组,看看结果是否如期望的那样,并 考虑一下为什么。在第二种方法中采用 new 来创建数组空间,并且逐个赋值。方法中创建的数 组空间是5个,而实际只赋值了4个,但是打印时还是打印出了第五个空元素。

(2)二维数组

strings[1][1]="south";

strings[1][2]="west"

strings[1][3]="north";

for(String[] tempStrings:strings){

System.out.println(Arrays.asList(tempStrings));

public static void main(String[] args){

// testDirectConArray0;

// testNewConArrayO

testTdimArrayO

testNewTidmArray(;

运行结果如下:

[one, two, three]

[four, five, six]

[seven, eight,nine]

[up,down]

[east, south, west, north]

代码中使用两种方式创建二维数组,二维数组和一维数组的使用没有太大分别,只是多加 了一个维度;嵌套的数组大小可以保持统一或者自定义不同的大小。

数组的使用和功能简单,虽然有效率高的优点,但是一般的业务逻辑很难体现其优势,通 常情况下一般使用容器类来代替数组的使用。

1.6.2 List

容器 List 其实就是一个列表,但是 Java 对列表的实现分为两种, 一种是类似数组的实现 ArrayList, 一种是链表的实现 LinkedList。 这两种 List 都可以通过 List 类进行引用并且调用方 法,只是由于内部实现的不同存在性能上的差异, ArrayList 在插入方面不如 LinkedList, LinkedList在获取列表中的值方面性能不如 ArrayList。 可以设计实验方法来检验这两种List 的性 能差别,这里就不过多介绍了,仅介绍List的基本用法。

(1)ArrayList

public static void testArrayList(){

List list =new ArrayList(0;

list.add("one");

list.add("two");

list.add("three");

list.add("four");

System.out.println(list)

System.out.println(list.get(3));

list.remove("four");

System.out.println(list)

System.out.println("list contains one is"+list.contains("one"));

list.add("five");

list.set(3,"four")

System.out.println(list);

System.out.println("list index of two is"+ list.indexOf("two"));

System.out.println("sub list is"+list.subList(1,3));

if(llist.isEmpty0){

Object[] strings =list.toArray0;

System.out.println("array length is"+ strings.length);

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:学习《零基础Java从入门到精通》_5.2 循环控制语句
下一篇:打开《Java语言程序设计与应用》_从基础向熟练进发_3.5 数组查找
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×