容器类基础篇(一)

容器类:用来解决数组具有固定尺寸而使得灵活性受限的问题。基本的容器类(集合类)有:List、Set、Queue、Map。

Java容器类类库的用途是用来“保存对象”,这分为两个不同的大类:

1.Collection(集合的根接口)
2.Map:每个槽内保存了两个对象,即键/值对。


它们的区别在于容器中每个“槽”可以保存的元素个数。Collection的每个槽只能保存一个元素。此类容器包括:
1)List:以特定的顺序保存一组元素
2)Set:元素不能重复
3)Queue:只允许在容器的一“端”插入对象,并从另一“端”移除对象

最早在学习泛型类的时候接触过的容器类有:ArrayList。使用add()和get(index)来添加和访问对象,set(index,element)修改对象,size()返回当前容器中添加了多少个元素,相当于长度。注:ArrayList是一个实现了Collection接口的类。

 

复习一下关于ArrayList的两种定义方法:

方法一:ArrayList list = new ArrayList()

这样存进去的对象默认都是Object类型的,但在当使用get取出时必须进行类型转换,否则是Object的引用。

方法二:ArrayList<T> list = new ArrayList<T>()
在最开始就预定义了类型,这样get时就不需要进行显示类型转换。
当指定了类型T时,并不仅限于只能该确切的T类对象放置到容器中,可以向上转型。即可以存放T的子类对象到容器中。

下面是一个ArrayList操作的小例子:

 1 import java.util.ArrayList;
 2 public class A {
 3     public static void main(String[] args) {
 4         ArrayList<Basic> list = new ArrayList<Basic>();
 5         list.add(new Z1());
 6         list.add(new Z2());
 7         list.add(new Z3());
 8         for(Basic b:list){
 9             System.out.println(b);
10         }
11     }
12 }
13 class Basic{}
14 class Z1 extends Basic{};
15 class Z2 extends Basic{};
16 class Z3 extends Basic{};


前面介绍过Collection容器类是用来保存对象的集合,那么如何往Collection中添加对象呢?方法是很多的,下面介绍了4种常见方法:

1.add()
2.Arrays.asList(数组/元素列表): 接受一个数组或者是用逗号分割的元素列表,将其转换成一个List对象。
3.使用静态类Collections中的addAll(collection,数组/元素列表)方法
4.直接用Arrays.asList()输出,将其当作是List。但其实底层还是数组,因此不能调整尺寸。可以用set()来修改元素,但不能用add()添加,否则会报异常。

Collection添加元素的Demo:

 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 import java.util.Collection;
 4 import java.util.Collections;
 5 import java.util.List;
 6 
 7 public class A {
 8     public static void main(String[] args) {
 9         // 元素列表
10         Collection<Integer> c = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
11 
12         // 接受一个数组转换成List
13         Integer[] moreInts = { 6, 7, 8, 9, 10 };
14         c.addAll(Arrays.asList(moreInts));
15 
16         // 使用静态类Collections中的方法
17         Collections.addAll(c, 11, 12, 13, 14, 15);
18 
19         // addAll方法也可以接受数组
20         Collections.addAll(c, moreInts);
21         
22         
23          //foreach方式打印
24           for(Integer i: c){ System.out.print(i+"  "); }
25          
26 
27         // 直接用Arrays.asList()输出
28         List<Integer> list = Arrays.asList(moreInts);
29         list.set(0, 1);
30         /*    
31          * list.add(100);    
32          * 这条编译不通过,原因是底层仍旧是一个数组,不能更改尺寸
33         */
34         
35         //容器类默认打印方式
36         System.out.println(list);
37 
38     }
39 }

容器的默认打印行为:默认调用toString(),打印的结果用中括号括起来。如:上面例子最后一条 [1, 7, 8, 9, 10]

转载于:https://www.cnblogs.com/devilfree/archive/2012/09/16/2687886.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里MySQL读写一致_阿里面试题:如何保证缓存与数据库的双写一致性?

作者&#xff1a;你是我的海啸出处&#xff1a;https://blog.csdn.net/chang384915878/article/details/86756463只要用缓存&#xff0c;就可能会涉及到缓存与数据库双存储双写&#xff0c;你只要是双写&#xff0c;就一定会有数据一致性的问题&#xff0c;那么你如何解决一致性…

反射小应用之DataTable和ListT互操作

反射小应用之DataTable和List<T>互操作 在程序中&#xff0c;往往会遇到一些小情况&#xff0c;就是数据库取出来的时候为了方便直接将数据通过存储在DataSet或DataTable中&#xff0c;这样做的一个后果是在日后的的对数据进行”细“操作时&#xff0c;就发现它可能没有L…

python适合什么样的人群_什么样的人比较适合选择Python开发+人工智能技术?

原标题&#xff1a;什么样的人比较适合选择Python开发人工智能技术&#xff1f; 互联网行业最近几年来确实成为了竞相追捧的行业&#xff0c;人工智能、大数据的不断发展让Python开发技术成为了继Java开发之后的又一热门编程语言。我们都知道&#xff0c;想要学习Python开发编程…

java 8 方法引用(method references)

1 什么是方法引用&#xff08;method references&#xff09;java 8 添加了一个很熟悉但是又很陌生的符号::。 你也许会看到这样的代码System.out::println其实就是方法引用&#xff08;method references&#xff09;。由于java 8 把方法/函数也作为第一输入参数。所以你会看到…

SWT中Button事件的几种不同写法

1&#xff0e;匿名内部类写法button.addSelectionListener(new SelectionAdapter(){Overridepublic void widgetSelected(SelectionEvent e){.....}});释&#xff1a;当button被单击时&#xff0c;底层就会检查button是否注册了相对就的监听器&#xff0c;如果有&#xff0c;底…

python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别

我们在用python操作数据库的时候,经常会碰见两个函数:fetchone()和fetchall()刚开始学习的时候可能会搞不清楚他们两个的区别其实非常简单首先fetchone()函数它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回null其次是fetchall()函数,它的返回值是多个元组,即返…

文字对齐格式

text-align:justify; letter-spacing:5px; line-height:40px; text-indent:40px 转载于:https://www.cnblogs.com/mrcln/p/3757148.html

excel vba 从入门到精通_VBA词汇-基本元素篇

在公众号发布学习VBA需要哪些基础知识这篇文章后&#xff0c;有朋友给我们留言&#xff0c;希望可以出一份VBA基础的英语知识贴。其实相关的内容我们会在后面所对应知识点一一进行讲解&#xff0c;提前剧透其实会少很多学习未知知识的乐趣哦~ 我们会将所涉及的基础单词和其说明…

jQuery基础:remove()与 detach()区别

1、detach&#xff08;&#xff09; detach() 方法移除被选元素&#xff0c;包括所有文本和子节点。这个方法会保留 jQuery 对象中的匹配的元素&#xff0c;因而可以在将来再使用这些匹配的元素。detach() 会保留所有绑定的事件、附加的数据&#xff0c;这一点与 remove() 不同…

python保存模型 特征_Pytorch提取模型特征向量保存至csv的例子

Pytorch提取模型特征向量# -*- coding: utf-8 -*-"""dj"""import torchimport torch.nn as nnimport osfrom torchvision import models, transformsfrom torch.autograd import Variableimport numpy as npfrom PIL import Imageimport torchvi…

Matlab画图-非常具体,非常全面

Matlab画图 强大的画图功能是Matlab的特点之中的一个&#xff0c;Matlab提供了一系列的画图函数&#xff0c;用户不须要过多的考虑画图的细节&#xff0c;仅仅须要给出一些基本參数就能得到所需图形&#xff0c;这类函数称为高层画图函数。此外&#xff0c;Matlab还提供了直接对…

openfeign使用_Feign使用基于配置服务发现

之前写了篇《Feign在实际项目中的应用实践总结》Feign在实际项目中的应用实践总结 - 沐风之境 - 博客园​www.cnblogs.com总结了在一般项目中如何使用Feign这个提升开发效率的利器。最近在看Feign的文档的时候发现了之前遗漏的一些点&#xff0c;所以写了这篇文章进行补充。pom…

Oracle按用户进行统计信息更新

按用户进行统计信息更新 PL/sqldev工具使用system用户连接到oracle&#xff0c;打开命令窗口执行以下SQL&#xff0c;用户名请根据实际情况进行更改&#xff1a; begin dbms_stats.gather_schema_stats( ownname > testuser, estimate_percent > dbms_stats.aut…

个人使命宣言

最近在阅读《高效人士的7个习惯》&#xff0c;其中提到个人使命宣言&#xff0c;也就是个人的行为宪法&#xff0c;有了这个宪法我们在日常生活和工作中才能有法可循有法可依&#xff0c;才不至于在纷繁的社会中迷失自己。通过思考自我感觉制作个人使命宣言还是非常有用的&…

jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧

json&#xff1a;JavaScript 对象表示法(javascript Object Notation)&#xff0c;其实JSON就是一个javaScript的对象(Object)而已。如有不清楚JSON&#xff0c;可以去w3cschool了解http://www.w3school.com.cn/json/1.在Javascript中新建一个字符串(JSON文本)。 var txt { &q…

php中__autoload()方法详解

原文地址&#xff1a;http://www.php100.com/html/php/lei/2013/0905/5267.html[导读] PHP在魔术函数__autoload()方法出现以前&#xff0c;如果你要在一个程序文件中实例化100个对象&#xff0c;那么你必须用include或者require包含进来100个类文件&#xff0c;或者你把这100个…

python读取sql_从python读取sql的实例方法

从python读取sql的方法&#xff1a; 1、利用python内置的open函数读入sql文件&#xff1b; 2、利用第三方库pymysql中的connect函数连接mysql服务器&#xff1b; 3、利用第三方库pandas中的read_sql方法读取传入的sql文件即可。 python 直接读取 sql 文件&#xff0c;达到使用 …

我笨,但我不傻

2019独角兽企业重金招聘Python工程师标准>>> 威哥说&#xff1a;很多朋友给我留言&#xff0c;在学习的过程中如何坚持下去&#xff0c;关于努力和目标&#xff0c;我想谈谈自己的理解&#xff0c;有不同见解的地方&#xff0c;欢迎留言跟我探讨哈。 if(努力苦逼) r…

GNU make manual 翻译( 一百零四)

继续翻译 4.7 Rules without Recipes or Prerequisites If a rule has no prerequisites or recipe, and the target of the rule is a nonexistent file, then make imagines this target to have been updated whenever its rule is run. This implies that all targets dep…

mysql 数字 除以 一万_腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

腾讯股票接口&#xff1a;大单数据http://stock.finance.qq.com/sstock/list/view/dadan.php?tjs&csz002451&max80&p1&opt10&o0opt10 11 12 13 分别对应成交额大于等于(100万 200万 500万 1000万)opt1,2,3,4,5,6,7,8 分别对应成交量大于等于(100手 200手 …