我是
靠谱客的博主
细腻茉莉,最近开发中收集的这篇文章主要介绍
Java集合类笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
集合类是Java基础技术中十分重要的内容。Java集合类封装了集合中常用数据结构和算法,它犹如哪咤的烽火轮,功能强大,而且不用亲自制造(Made in America)。
首先看下面这张表,本文即通过它展开相关内容。
-
| Implementations |
---|
Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + LinkedList |
Interfaces | Set | HashSet | | TreeSet | | LinkedHashSet |
---|
List | | ArrayList | | LinkedList | |
Map | HashMap | | TreeMap | | LinkedHashMap |
图1
Java集合类的种类
注意图1第二列,Java在设计集合结构时,把集合划成3类:第一种Set,普通的无序集;第二种List,偏序集;第三种Map,有序对的集合。其中Set和List都继承自Collection接口,Map没有从Collection继承。这样做也是没办法的事,因为Map并不是一个通常意义的集合,它的元素是一个key-value-pair,而Collection根本就不是Map,它还没有key的概念。虽然Collection和Map彼此没有继承关系,但它们有大量同名的方法。值得注意的是,Map提供了keySet()和values()两个方法,分别返回一个key的集合和值的集合。
示例1:通过对一个HashSet对象和一个ArrayList对象中元素使用跌代器可以显示Set与List中元素之间的顺序关系:Set中元素是无序的,List不是。
import
java.util.ArrayList;
import
java.util.HashSet;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Set;
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340342787965.gif)
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340364450962.gif)
public
class
ElementOrder
...
{
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
public static void main(String[] args) ...{
Iterator it = null;
Set ht = new HashSet();
ht.add("htA");
ht.add("htB");
ht.add("htC");
ht.add("htD");
it = ht.iterator();
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
while (it.hasNext()) ...{
System.out.println(it.next());
}
List al = new ArrayList();
al.add("alA");
al.add("alB");
al.add("alC");
al.add("adD");
it = al.iterator();
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
while (it.hasNext()) ...{
System.out.println(it.next());
}
}
}
示例2:Map类型的集合对象通过keySet()和values()两个方法,分别返回一个key的集合(Set类型)和值的集合(Collection类型)。
import
java.util.Collection;
import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.Map;
import
java.util.Set;
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340342787965.gif)
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340364450962.gif)
public
class
TestMap
...
{
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
public static void main(String[] args) ...{
Iterator it = null;
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340365299206.gif)
Map tm = new HashMap();
tm.put("a", new Integer(1));
tm.put("b", new Integer(2));
tm.put("c", new Integer(3));
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340365299206.gif)
Set tk = tm.keySet();
it = tk.iterator();
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340365299206.gif)
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
while (it.hasNext()) ...{
System.out.println(it.next());
}
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340365299206.gif)
Collection tv = tm.values();
it = tv.iterator();
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340365299206.gif)
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340366407248.gif)
while (it.hasNext()) ...{
System.out.println(it.next());
}
}
}
Java集合类基于的常见数据结构
注意到图1 的第二行,是Java集合类基于的常见数据结构,它是集合对象中元素的组织方式。不同数据结构的类都有一些特定操作,参见示例。
示例3 List的一些排序操作。来自The Java Developers Almanac 1.4
//
Create a list
![](https://file2.kaopuke.com:8081/files_image/2023060923/202306092340364450962.gif)
String[] strArray
=
new
String[]
...
{"z", "a", "C"}
;
List list
=
Arrays.asList(strArray);
//
Sort
Collections.sort(list);
//
C, a, z
//
Case-insensitive sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
//
a, C, z
//
Reverse-order sort
Collections.sort(list, Collections.reverseOrder());
//
z, a, C
//
Case-insensitive reverse-order sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(list);
//
z, C, a
区别与联系
图1种各类的区别和联系很明显:同行同集合类性,同列同数据结构。
操作
根据Java集合框架的体系,不同的集合类在拥有父类型的操作时由于本身的集合类型和数据结构类型的不同,都有其特有的方法。兄弟类之间有同名的方法也可能因为同样的原因有不同的实现,这正好体现了OO的多态性。
其他
不可忽视的是java.util.Collections提供很多操作集合对象的静态方法。集合在Java还有其他非官方实现形式,如开源的Trove等。值得一提的是,示例1中Set ht = new HashSet();的定义方式体现了DIP(Dependence Inversion Principle,依赖倒转原则)。
参考资料:
最后
以上就是细腻茉莉为你收集整理的Java集合类笔记的全部内容,希望文章能够帮你解决Java集合类笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复