Collection和Map以及他们亲戚的全家福

在了解具体属性和方法之前,我们先看一张全家福:

1、Collection和Map都来源于Java.util包,是非常实用常用的数据结构。具体的继承实现关系如上图,先整体有个印象,再依次介绍各个部分的方法。
2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
3、Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。
4、Iterator(迭代器)是一种模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。

Collection的主要方法

boolean add(Object o)添加对象到集合
boolean remove(Object o)删除指定的对象
int size()返回当前集合中元素的数量
boolean contains(Object o)查找集合中是否有指定的对象
boolean isEmpty()判断集合是否为空
Iterator iterator()返回一个迭代器
boolean containsAll(Collection c)查找集合中是否有集合c中所有元素
boolean addAll(Collection c)将集合c中所有的元素添加给该集合
void clear()删除集合中所有元素
void removeAll(Collection c)从集合中删除c集合中也有的元素
void retainAll(Collection c)从集合中删除集合c中不包含的元素

Collection的子类继承它的所有方法。

List的主要方法

void add(int index,Object element)在指定位置上添加一个对象
boolean addAll(int index,Collection c)将集合c的元素添加到指定的位置
Object get(int index)返回List中指定位置的元素
int indexOf(Object o)返回第一个出现元素o的位置.
Object remove(int index)删除指定位置的元素
Object set(int index,Object element)用元素element取代位置index上的元素,返回被取代的元素
void sort()

我们可以通过List的官方文档看到大大的Interface List<E>字样,这说明List是一个接口,接口不能通过new进行实例化。而它有很多子类,这些子类可以实例化,ArrayList、LinkList、Vector拥有所有Collection和List的方法,他们都可以实例化。

我们一般使用“父类指针指向子类对象”的方式生成一个子类对象,比如:

//初始化一个ArrayList
List<Integer> list=new ArrayList<Integer>();

当然,你如果不想使用“父类指针指向子类对象”的方式,也可以直接用子类指针指向自己的对象,比如:

//初始化一个ArrayList
ArrayList<Integer> arrayList=new ArrayList<Integer>();

补充:
将array转换成ArrayList:

String[] cArray = new String[]{"a","b","c","d","e"};
ArrayList<String> arrayList=new ArrayList<String>(Arrays.asList(cArray));
System.out.println(arrayList);

将ArrayList转换成array:

String[] stringArr = new String[arrayList.size()];
arrayList.toArray(array);

HashSet

HashSet类继承Collection类所有方法。

Stack

Object push(Object element):将元素推送到堆栈顶部。
Object pop():移除并返回堆栈的顶部元素。如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常。
Object peek():返回堆栈顶部的元素,但不删除它。
boolean empty():如果堆栈顶部没有任何内容,则返回true。否则,返回false。
int search(Object element):确定对象是否存在于堆栈中。如果找到该元素,它将从堆栈顶部返回元素的位置。否则,它返回-1。
stack的方法转载自:java中的栈 stack类基本操作(一)

HashMap

void clear():从HashMap中删除所有的映射。
Object clone():返回此 HashMap实例的浅拷贝(键和值本身不被克隆)。
boolean containsKey(Object key):如果此映射包含指定键的映射,则返回 true 。
boolean containsValue(Object value):如果此HashMap将一个或多个键映射到指定值,则返回 true 。
Set<Map.Entry<K,V>> entrySet():返回此HashMap中包含的映射的Set视图。可以通过for循环得到单个对象,然后使用getKey()和 getValue()方法得到键值。
V get(Object key):返回到指定键所映射的值,或 null如果此映射包含该键的映射。
boolean isEmpty():如果此HashMap不包含键值映射,则返回 true 。
Set<K> keySet():返回此HashMap中包含的键的Set视图。
V put(K key, V value):将指定的值与此映射中的指定键相关联。
void putAll(Map<? extends K,? extends V> m):将指定HashMap的所有映射复制到此HashMap。
V remove(Object key):从该Map中删除指定键的映射(如果存在)。
boolean remove(Object key):删除指定key值的映射。
V replace(K key, V value):只有当key映射到某个值时,才能替换指定键的条目。
boolean replace(K key, V oldValue, V newValue):仅当当前key映射到指定的值时,才能替换指定键的条目。
int size():返回此HashMap中键值映射的数量。
Collection<V> values():返回此HashMap中包含的值的Collection视图。

Iterator

Java中的Iterator功能比较简单,并且只能单向移动。使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

Object next():获得序列中的下一个元素,返回的类型是Object,需要进行类型转换。
boolean hasNext():检查序列中是否还有元素。
void remove():将迭代器新返回的元素删除。

遍历Collection的例子:

ArrayList<String> array = new ArrayList<String>();
array.add("aa");
array.add("bb");
array.add("cc");//遍历ArrayList方法一
for (Iterator iter = array.iterator(); iter.hasNext();) {String str = (String)iter.next();System.out.println(str);
}
//遍历ArrayList方法二
Iterator iter = array.iterator();
while(iter.hasNext()){String str = (String) iter.next();System.out.println(str);
}

遍历HashMap的例子:

HashMap<String, String> map=new HashMap<String, String>();
map.put("111", "aaa");
map.put("222", "bbb");//map.entrySet()方法将map中的每个键值对对象保存在set一个中,可以通过对象的getKey()方法获得键,通过getValue()方法获得值
Set<Map.Entry<String, String>> set=map.entrySet();//方法一:使用Iterator的方法
for(Iterator<Map.Entry<String, String>> iterator=set.iterator();iterator.hasNext(); ) {Map.Entry<String, String> entry=(Map.Entry<String, String>)iterator.next();System.out.println(entry.getKey()+"->"+entry.getValue());
}
//方法二:直接使用for(:)遍历set
for(Map.Entry<String, String> ele : set) {System.out.println(ele.getKey()+"->"+ele.getValue());
}

【Java】常用的collection、map子类的属性和方法相关推荐

  1. Java 集合List及Map中forEach()方法

    我们先看一个forEach()方法遍历List集合的例子: //使用com.google.guava包创建集合List<String> list =Lists.newArrayList(& ...

  2. java常用jar包详解

    1.dt.jar SUN对于dt.jar的定义:Also includes dt.jar, the DesignTime archive of BeanInfo files that tell int ...

  3. Java常用接口与类——Date、Calendar、DateFormat、TimeZone(日期相关)

    >Date类和DateFormat类 Date d=new Date(); //System.out.println(d.toLocaleString()); SimpleDateFormat ...

  4. python 父类调用子类的属性,python父类中调用子类

    Python中如何使具有相同父类中的两个子类之间进行通过学习别人的Python代码,发现其中一个子类的实例调用了另一个子类的子类调用父类函数有以下方法: 直接写类名调用 用 super(type, o ...

  5. 笔记整理4----Java语言高级(四)16 JAVA常用API-高级+17 泛型与常见数据结构+18 Map与Set集合+19 异常处理+20 IO流-高级

    16 JAVA常用API-高级+17 泛型与常见数据结构+18 Map与Set集合+19 异常处理+20 IO流-高级 第05天 API 今日内容介绍  Object类 & System类 ...

  6. java集合,Collection,list,set,map汇总

    1 Java集合简介 Java是一门面向对象的语言,就免不了处理对象,为了方便操作多个对象,那么我们就得把这多个对象存储起来,想要存储多个对象(变量),很容易就能想到一个容器(集合)来装载 简单来说集 ...

  7. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  8. java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO

    Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...

  9. Java的集合之Map接口---(英雄联盟的CP例子)从光棍(Collection)变夫妻(Map)

    目录 Interface Map Map接口概述 Map接口和Collection接口的不同 添加功能 V put(K key, V value) 删除功能 void clear() V remove ...

  10. java 父类是抽象类 定义private的属性 子类继承_java继承、多态、接口、抽象类定义及应用...

    继承:关键字extends java 中继承是单继承 允许多个子类继承一个父类,不允许一个子类继承多个父类. 继承是继承父类的所有属性和方法,但并不是所有的属性和方法都可被子类调用: 子类继承父类是必 ...

最新文章

  1. Caffe中计算图像均值的实现(cifar10)
  2. Java 门面模式 浅析
  3. mysql的数据现实在小程序_使用phpstudy将本地mysql数据显示在微信小程序前端
  4. 基于nginx和uWSGI在Ubuntu系统上部署Django项目
  5. 更新网盘(云存储)功能需求,免费网盘需求,手机数据备份
  6. word List16
  7. [NOI2014]魔法森林
  8. php 运行thinkphp,thinkPHP cli命令行运行PHP代码
  9. android 抓包 2
  10. Orchard详解--第八篇 拓展模块及引用的预处理
  11. 在SQUIRREL中使用PHOENIX操作HBASE——创建表和视图
  12. 学计算机连系统都不会装,Win7系统安装不了iTunes该如何解决-电脑自学网
  13. html字体中英文设置,用 CSS3 指定网页的中英文分别使用不同字体
  14. 影像组学ibex_影像组学技术方法
  15. 编程向未来---启程
  16. Python小白机器学习教程:Sklearn精讲
  17. oracle = 中文生效,prm dul恢复oracle数据库数据表 中文最简易说明
  18. GNUradio与USRP折腾指南
  19. ​ 斯科特·马特森​与MIMO发明者谈话节选
  20. Yii setFlash getFlash用法

热门文章

  1. python--数据类型
  2. 青少年Python编程
  3. matlab中inf是什么意思,simulink中inf什么意思
  4. 5G时代的到来会对UI交互设计产生什么影响?
  5. 【斗地主代码分析】(2)-斗地主逻辑-客户端与服务端
  6. 【精度】概率论之概念解析:边缘化(Marginalisation)
  7. enfuzion与lsf构建渲染集群_渲染农场 - 秦瑞It行程实录 - 博客园
  8. mysql查询区分英文大小写_Mysql查询英文如何严格区分大小写?
  9. python 类的执行中保部存值_python 生成有效的四要素
  10. 怎么合并mp3音频文件?