Java集合基本概念及元素添加
Java容器类类库的用途是"保存对象", 并将其划分为两个不同的概念:
(1)Collection: 一个独立元素的序列, 这些元素都服从一条或多条规则. List必须按照插入的顺序保存元素, 而Set不能有重复元素. Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)
(2)Map: 一组成对的"键值对"对象, 允许你使用键来查找值, 它也被称为"关联数组", 因为它将某些对象与另外一些对象关联在了一起, 或者被称为"字典", 因为你可以使用键对象来查找值对象, 就像在字典中使用单词来定义一样. Map是强大的编程工具.
在java.util包中的Arrays和Collections类中都有很多实用方法, Arrays.asList()接收一个数组或是一个用逗号分隔的元素列表(使用可变参数), 并将其转换为一个List对象, Collections.addAll()方法接受一个Collections对象, 以及一个数组或是一个逗号分隔的列表, 将元素添加到Collection中, 下面的示例展示了这两个方法:
public static void main(String[] args) {
//Collection
Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Integer[] i = {6, 7, 8, 9, 10};
collection.addAll(Arrays.asList(i));
Collections.addAll(collection, 11, 12, 13, 14, 15);
Collections.addAll(collection, i);
for (Integer c : collection) {
System.out.print(c + ",");
}
// output: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,7,8,9,10,
}
但是, Arrays.asList()方法的限制是它对所产生的List的类型做出了最理想的假设, 而并没有注意到它会赋予什么样的类型, 有时候就会引发问题:
class Snow {}
class Powder extends Snow {}
class Light extends Powder {}
class Heavy extends Powder {}
class Crusty extends Snow {}
class Slush extends Snow {}
public class j_221 {
public static void main(String[] args) {
List<Snow> snow1 = Arrays.asList(new Crusty(), new Slush(), new Powder());
//List<Snow> snow2 = Arrays.asList(new Light(), new Heavy());
List<Snow> snow3 = new ArrayList<Snow>();
Collections.addAll(snow3, new Light(), new Heavy());
List<Snow> snow4 = Arrays.<Snow>asList(new Light(), new Heavy());
}
}
当试图创建snow2时, Arrays.asList()中只有Powder类型, 因此它会创建List<Powder>而不是List<Snow>, 尽管Conllections.addAll()工作的很好, 因为他从第一个参数中了解到了目标类型是什么; 正如从创建snow4操作中所看到的,可以在Arrays.asList()中间插入一条"线索", 以告诉编译器对于由Arrays.asList()产生的List类型, 实际的目标类型应该是什么, 这称为显示类型参数说明.
Java集合基本概念及元素添加的更多相关文章
- java集合遍历删除指定元素异常分析总结
在使用集合的过程中,我们经常会有遍历集合元素,删除指定的元素的需求,而对于这种需求我们往往使用会犯些小错误,导致程序抛异常或者与预期结果不对,本人很早之前就遇到过这个坑,当时没注意总结,结果前段时间又 ...
- Java集合框架中的元素
之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理. 一 ...
- java代码实现将集合中的重复元素去掉
package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...
- Java集合源码分析(二)Linkedlist
前言 前面一篇我们分析了ArrayList的源码,这一篇分享的是LinkedList.我们都知道它的底层是由链表实现的,所以我们要明白什么是链表? 一.LinkedList简介 1.1.LinkedL ...
- java集合介绍(List,Set,Map)
前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...
- 「 深入浅出 」java集合Collection和Map
本系列文章主要对java集合的框架进行一个深入浅出的介绍,使大家对java集合有个深入的理解. 本篇文章主要具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set ...
- Java——集合系列(1)框架概述
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 集合框架概述 Jav ...
- 浅谈 Java集合
Java 集合 集合是对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能. Java集合类库所处位置:java.util.*. 与现代的数据结构类库的常见做法一样,Java集合类库也将接口 ...
- java 集合框架图
Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型. Java 2集合框架图集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架 ...
随机推荐
- Nginx location配置详细解释
nginx location配置详细解释 语法规则: location [=|~|~*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 ur ...
- hihoCoder 1051 : 补提交卡 枚举
思路:预处理cnt(i)表示前i个数中有多少天需要补提交卡,枚举各个连续区间,区间[j, i]中需要补提交卡的天数是cnt(i) - cnt(j-1),判断m是否大于等于cnt(i) - cnt(j- ...
- spring boot actuator 简单使用
spring boot admin + spring boot actuator + erueka 微服务监控 简单的spring boot actuator 使用 POM <dependenc ...
- 关于.Net的知识和相关书籍
a. DBCC DROPCLEANBUFFERS 清空缓存信息b. DBCC FREEPROCCACHE 从过程缓存中删除所有元素2. 引用两个和尚打水的故事,说明平时要注重积累,只有量变达到了才会形 ...
- SAS︱操作语句(if、do、select、retain、array)、宏语言、统计量、运算符号
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- SAS中的一些常见的符号.运算符是一种符号①比 ...
- Android HotFix动态加载框架介绍
HotFix(Deprecated) https://github.com/dodola/HotFix 请关注 RocooFix 我重新写了一个RocooFix框架,解决了Nuwa因为Gradle1. ...
- 利用 DirectShow 开发自己的 Filter
学习directshow已经有几天了,下面将自己的学习心得写下来,希望对其他的人有帮助. Filter实质是个COM组件,所以学习开发Filter之前你应该对com的知识有点了解.Com组件的实质是一 ...
- ssh禁止密码登录
1.root用户登陆后,运行以下第一句指令,其他根据提示进行输入: ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file ...
- sudo:无法解析主机 解决方案
你如果电脑中没有vim,用gedit也可以. 打开文件以后,将其中的 127.0.1.1 xxxxx xxx 替换成你电脑的自己的名字即可.
- R语言︱缺失值处理
#缺失值 an=c(1,2,NA) is.na(an) #会形成一个布尔向量 布尔向量就是一群像(FALSE,FALSE,TURE)这样的向量. 关于缺失值还有一个函数:complete.cases函 ...