黑马程序员—Java集合框架
来源:互联网 发布:人工智能的龙头股票 编辑:程序博客网 时间:2024/05/21 15:39
------Java培训、Android培训、iOS培训、Net培训、期待与您交流! -------
一、集合的概述
三、Collection接口
Collection接口是集合框架最基础的接口,所以这个接口定义了整个集合框架都可以调用的方法,因此必须十分的熟悉此定义。
以下列举了Collection常用的方法:
四、List列表
List列表作为集合的一种,主要特点在于其中的元素保持一定的顺序,常用List的两种实现类是ArrayList类和LinkedList类。
(1)ArrayList类
在Java中,标准数组是定长的,创建后,就不能被加长或缩短,也就意味着开发者必须先知道数组可以容纳多少元素,一般情况下,只有在运行时才能知道需要多大的数组,为了解决这个问题,集合框架定义了ArrayList,它能够动态地增加或者减少其大小。
ArrayList有三种构造方法:
ArrayList( );----------------------------建立一个空的数组列表
ArrayList(Collection c );------------建立一个数组列表,该列表由类C中的元素初始化;
ArrayList(int initialCapacity);------建立一个数组列表,该数组有指定的初始容量(capacity);
ArrayList类主要的方法及功能描述如下表:
示例:创建一个数组列表,接着添加String类型对象,使列表显示出来,将其中一些元素删除后,再一次显示列表;
import java.util.ArrayList;public class MyArrayList {public static void main(String[] args) {//创建一个ArrayList对象ArrayList ar = new ArrayList();System.out.println("数组的大小:"+ar.size());//向ArrayList对象中添加内容ar.add("A");ar.add("B");ar.add("C");ar.add("D");//把“E”加在ArrayList对象的第一个位置ar.add(0,"E");System.out.println("加入元素后数组的大小:"+ar.size());System.out.println("数组的内容:"+ar);//删除数组中的对象ar.remove("B");ar.remove(0);//打印删除后数组的内容System.out.println("删除后元素后数组的大小:"+ar.size());System.out.println("数组的内容:"+ar);}}
控制台输出的内容:
数组的大小:0
加入元素后数组的大小:5
数组的内容:[E, A, B, C, D]
删除后元素后数组的大小:3
数组的内容:[A, C, D]
(2)LinkedList类
LinkedList类提供了一个链接列表的数据结构,它有两种构造方法;
LinkedList( );--------------------------------建立一个空的链接列表;
LinkedList( Collection c);-----------------建立一个链接列表,该列表由类C中的元素初始化;
示例:创建一个数组列表,接着添加String类型对象,使列表显示出来,将其中一些元素删除后,再一次显示列表。
import java.util.LinkedList;public class MyLinkedList {public static void main(String[] args) {//创建一个ArrayList对象LinkedList ar = new LinkedList();System.out.println("数组的大小:"+ar.size());//向LinkedList对象中添加内容ar.add("A");ar.add("B");ar.add("C");ar.add("D");//在列表的第一个和最后一个位置加入数据ar.addFirst("E");ar.addLast("F");System.out.println("加入元素后数组的大小:"+ar.size());System.out.println("数组的内容:"+ar);//删除数组中的对象ar.removeFirst();ar.removeLast();//打印删除后数组的内容System.out.println("删除后元素后数组的大小:"+ar.size());System.out.println("数组的内容:"+ar);}}
控制台输出的内容:
数组的大小:0
加入元素后数组的大小:6
数组的内容:[E, A, B, C, D, F]
删除后元素后数组的大小:4
数组的内容:[A, B, C, D]
五、Set类
Set集合是一种不包括重复元素的Collection,即Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。Set类中的两个主要的类HashSet类和TreeSet类。
(1)HashSet类
HashSet类创建了一个类集,该类集使用散列表进行存储,而散列表则通过使用称之为散列法的机制来存储信息。在散列中,一个关键字的信息内容被用来确定唯一的一个值,称为散列码。而散列码则被用来当做与关键字相连的数据的存储下标。另外,可以向HashSet中添加null值,但只能添加一次,而且重复向HashSet中添加元素其值只显示一次。
HashSet类的构造方法如下:
HashSet( );------------------------------------------------------构造一个默认的散列集合
HashSet(Collection c);---------------------------------------用类C中的元素初始化散列集合
HashSet(int initislCapacity);--------------------------------用capacity初始化散列集合的容量
HashSet(int initialCapacity , float fillRatio);-------------用参数初始化散列集合的容量和填充比(也称为加载容量)
HashSet类常用的方法及功能描述如下表:
示例:
import java.util.HashSet;public class TestHashSet {public static void main(String[] args) {//创建一个HashSet对象HashSet hs = new HashSet();//向HashSet对象中添加内容hs.add("a");hs.add("a");hs.add("b"); hs.add("c"); hs.add("b"); hs.add("a"); //向HashSet对象中添加null hs.add(null); System.out.println("HashSet中的元素"+hs); }}
控制台输出的内容:
HashSet中的元素[null, a, b, c]
(2)TreeSet类
TreeSet为使用树来进行存储的Set接口提供了一个工具。对象按升序进行存储,这方便我们对其进行访问和检索。在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。
TreeSet类的构造方法如下:
TreeSet( );-------------------------------------构造一个空的树集合,其元素按升序排序
TreeSet(Collection c);----------------------用类C中的元素初始化树集合
TreeSet(Comparator comp);-------------按照由comp指定的比较方法进行排序
TreeSet(SortedSet ss);-------------------构造了一个包含了ss的元素的树集合
TreeSet类中有几个特殊的方及功能描述:
示例:
HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]HashSet中的元素[null, a, b, c]
import java.util.TreeSet;public class MyTreeSet {public static void main(String[] args) {//创建一个TreeSet对象TreeSet Tr = new TreeSet();//向TreeSet对象中添加内容Tr.add(1);Tr.add(6);Tr.add(4);Tr.add(0);Tr.add(2);System.out.println("TreeSet类输出内容"+Tr);}}
控制台输出的内容:
TreeSet类输出内容[0, 1, 2, 4, 6]
注明:TreeSet类会按树顺序存储其元素,所以它们被按照数字大小排列;而HashSet则 不会。
六、通过迭代方法访问类集——Iterator接口
Iterator()是一个或者实现Iterator,或者实现ListIterator接口的对象。Iterator可以完成通过循环输出类集内容,从而获得或删除元素。ListIterator是对Iterator的扩展,允许双向遍历列表,并且可以修改单元。
Iterator接口说明方法的总结:
在通过迭代方法访问类集之前,必须得到一个迭代方法。通常,使用迭代方法循环输出类集内容的操作步骤如图:
示例:
import java.util.ArrayList;import java.util.Iterator;public class MyListIterator {public static void main(String[] args) {//创建一个ArrayList对象 ArrayList ar = new ArrayList();//向ArrayList对象中添加内容ar.add("A");ar.add("B");ar.add("C");ar.add("D");System.out.print("数组的内容是:");//使用Iterator显示数组的内容Iterator itr = ar.iterator();//调用hasNext()方法进行循环while (itr.hasNext()) {Object c = itr.next();System.out.print(c+"");}}}
控制台显示的内容:
数组的内容是:ABCD
七、映射
映射(map)是一个存储关键字和值的关联,或者说是“关键字/值”对的对象,即给定一个关键字,可以得到它的值。关键字和值都是对象,关键字必须是唯一的,但值是可以被复制的。而Map接口映射唯一关键字到值。关键字是以后用于检索值的对象。给定一个关键字和一个值,可以存储这个值到一个Map对象中。当这个值被存储以后,就可以使用它的关键字来检索它。
Java提供了几个用来实现映射接口的类。可以被用作映射的类如下表:
(1)HashMap类
HashMap类使用散列表实现Map接口,其构造方法如下:
HashMap();-----------------------------------------------构造一个默认的散列映射;
HashMap(Map m);--------------------------------------用类m中的元素初始化散列映射
HashMap(int Capacity);-------------------------------将散列集合的容量初始化为capacity
HashMap(int Capacity , float fillRatio);------------用参数同时初始化散列映射的容量和填充比
HashMap类的主要方法及功能如下表:
示例:
import java.util.HashMap;public class MyHashMap {public static void main(String[] args) {//创建一个HashMap对象HashMap hm = new HashMap();//向HashMap对象中添加内容hm.put(1,"a");hm.put(2,"b");hm.put(3,"c");hm.put(4,"d");System.out.println("添加元素后的结果为:");System.out.println(hm);//删除和替换元素hm.remove(3);hm.put(2, "e");System.out.println("删除和替换元素后的结果为:");System.out.println(hm);}}
控制台显示的内容:
添加元素后的结果为:
{1=a, 2=b, 3=c, 4=d}
删除和替换元素后的结果为:
{1=a, 2=e, 4=d}
注意:HashMap类不保证输出元素的顺序
(2)TreeMap类
TreeMap类通过使用树实现Map接口。TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索。不像散列映射,树映射保证它的元素按照关键字升序排序。
TreeMap的构造方法如下:
TreeMap();---------------------------------------构造一个空树的映射
TreeMap(Map m);------------------------------用类m中的元素初始化映射,使用关键字按自然排序
Treemap(Comparator comp);---------------构造一个空的基于树的映射通过的使用Comparator来排序
TreeMap(SortedMap sm);--------------------用从sm的输入来初始化一个树映射
TreeMap类常用方法及功能如下:
示例:
import java.util.Iterator;import java.util.TreeMap;public class MyTreeMap {public static void main(String[] args) {//创建一个TreeMap对象TreeMap tm = new TreeMap();//向TreeMap对象中添加内容tm.put(1,"a");tm.put(7,"b");tm.put(5,"c");tm.put(3,"d");System.out.println("所有的元素的值为:"+tm);//为tm对象中的键值添加一个迭代器Iterator iter = tm.keySet().iterator();for (; iter.hasNext();) {System.out.println("元素的值:"+tm.get(iter.next()));}}}
控制台输出的内容:
所有的元素的值为:{1=a, 3=d, 5=c, 7=b}
元素的值:a
元素的值:d
元素的值:c
元素的值:b
- 黑马程序员——Java集合框架
- 黑马程序员——Java集合框架
- 黑马程序员——java集合框架
- 黑马程序员——java-集合框架
- 黑马程序员——JAVA集合框架
- 黑马程序员——java集合框架
- 黑马程序员——Java集合框架
- 黑马程序员——Java集合框架
- 黑马程序员—java集合框架应用
- 黑马程序员—java集合框架
- 黑马程序员—Java集合框架(LinkedList)
- 黑马程序员—java集合框架整理
- 黑马程序员—Java集合框架
- 黑马程序员--java集合框架
- 黑马程序员 Java集合框架
- 黑马程序员 java 集合框架
- 黑马程序员 Java集合框架
- 黑马程序员--Java集合框架
- 从零开始学习嵌入式 - 什么是IP core?
- OpenGL-----Spatial Convolution
- Processing 练习(4) - 鼠标控制颜色
- 第10章 无监督学习(3)
- OpenGL-----Tone Mapping
- 黑马程序员—Java集合框架
- hdu 5429 Geometric Progression (等比数列判定+大数模板)
- Inotify Example: Introduction to Inotify with a C Program Example
- hdu 5428 the factor(分解质因子)
- hdu 5430 reflect (欧拉函数)
- NSOperation综合案例: 下载图片/技术选择
- iCloud和Core Data
- Leetcode: Ugly Number II
- SDWebImage