Java集合的复习

鉴于考试临近,感觉Java集合这一块不是很熟悉,但是,在实战中,java 中的集合很是常用。于是花几天时间复习Java中的集合。首先根据一个解一下集合的理解顺序思路。

在java.util 包中提供了一些集合类,常用的有List,Set,Map。其中List和Set实现了Collection父类接口。Map则是键值对的映射集合。

List接口中的常用方法是ArrayList类方法,该类方法方便查询,但是插入和删除却比较缓慢。它每进行一次插入或者删除操作,都会影响被操作的后面的对象,最后完成,效率会很低。相较之下,后来的LinkedList类方法就方便插入和删除,但是随机访问的效率会很低。

例如ArrayList类,方便查询:

 1 package jihe;
 2
 3 import java.awt.List;
 4 import java.util.ArrayList;
 5 import java.util.Iterator;
 6
 7 public class Study {
 8     public static void main( String[] args )  {
 9         ArrayList al = new ArrayList(); // Create a new ArrayList
10         for( int i=0; i<10; i++ ) {
11              al.add( new Integer( i ) ); // Add Items to the array list
12             }
13         for( int i=0; i<al.size(); i++ ) {
14              System.out.println( i + " = " + al.get( i ) );
15             }
16         al.remove( 5 );
17         al.set( 5, new Integer( 66 ) );
18         for( Iterator i=al.iterator(); i.hasNext(); ) {
19                     Integer integer = ( Integer )i.next();
20                     System.out.println( integer );
21             }
22         }
23     }

再来看看LinkedList类,方便向集合中插入和删除元素:

 1 package jihe;
 2
 3 import java.util.LinkedList;
 4
 5 public class Example {
 6
 7     public static void main(String[] args) {
 8         String a = "A", b = "B", c = "C", test = "Test";
 9         LinkedList<String> list = new LinkedList<String>();
10         list.add(a); // 索引位置为 0
11         list.add(b); // 索引位置为 1
12         list.add(c); // 索引位置为 2
13         System.out.println(list.getFirst());// 获得并输出列表开头的对象
14         list.addFirst(test);// 向列表开头添加一个对象
15         System.out.println(list.getFirst());// 获得并输出列表开头的对象
16         list.removeFirst();// 移除列表开头的对象
17         System.out.println(list.getFirst());// 获得并输出列表开头的对象
18     }
19 }

运行结果:

由于Set集合是唯一性的,由HashSet类实现的Set集合的优点是能够快速定位集合中的元素。HashSet类需要重新实现equals()方法和hashCode()方法。

Map集合为映射类型,每个对象都是成对存在的。每个对象都有key和value,通过 键 获取 值。

Map接口的常用实现类有HashMap和TreeMap,HashMap是通过哈希码对其内部的映射关系进行快速查找,而TreeMap是有一定的顺序的,实现Comparable接口。如果遍历无序,则用HashMap进行删除和添加更为有效,否则TreeMap效果更好。

Map集合允许值对象为null,无个数限制,Set中只允许一个,不能重复。当get()方法返回值为null时,存在两种情况:value值为null;不存在。containsKey()方法用来判断是否存在某个键。

HashMap类的使用:

使用HashMap实现Map集合,需要重写hashCode()方法,这里有两个原则:

1.不唯一原则:不用给每个对象生成唯一的哈希码,只要通过hashCode()方法生成的哈希码能够利用get()方法得到和put()方法添加的映射关系就可以;

2.分散原则:分散不集中。

 1 package jihe;
 2
 3 import java.util.Collection;
 4 import java.util.HashMap;
 5 import java.util.Iterator;
 6 import java.util.LinkedList;
 7 import java.util.Map;
 8 import java.util.Set;
 9
10 public class Example {
11
12     public static void main(String[] args) {
13         Map<String,String>  map=new HashMap<String,String>();
14         map.put("1","Monday");   //添加
15         map.put("2","Tuesday");
16         map.put("3","Wensday");
17
18         Set keySet = map.keySet();
19         Collection valueCol = map.values();
20         Set x=map.entrySet();
21         Iterator i = keySet.iterator();
22         while(i.hasNext()){
23               System.out.println(i.next());
24         }
25         i= valueCol.iterator();
26         while(i.hasNext()){
27               System.out.println(i.next());
28         }
29         i=x.iterator();
30         while(i.hasNext()){
31                Map.Entry en=(Map.Entry)i.next();
32                String  key=(String)en.getKey();
33               String  value=(String)en.getValue();
34               System.out.println(key+" "+value);
35         }
36     }
37 }

TreeMap在添加、删除、定位映射关系上,性能比HashMap要差。适用于有序集合。

以上内容是对Map集合的一个初步了解,我会在后期继续补加实际运用的代码。

时间: 2024-10-11 13:30:54

Java集合的复习的相关文章

java集合框架复习(一)

数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,length只是告诉我们Array的容量. Arrays类: 专门用来操作Array,提供搜索,排序,复制等 静态方法. Arrays中equals():比较两个Array是否相等,Array拥有相同元素个数,且所有对应元素两两相等. fill():将值填入Array中. sort():用来对Array进

java集合框架复习

数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,length只是告诉我们Array的容量. Arrays类: 专门用来操作Array,提供搜索,排序,复制等 静态方法. Arrays中equals():比较两个Array是否相等,Array拥有相同元素个数,且所有对应元素两两相等. fill():将值填入Array中. sort():用来对Array进

java集合-HashMap

java集合-HashMap HashMap基于哈希表的 Map 接口的实现,以 key-value 的形式存在.在 HashMap 中,key-value 总是会当做一个整体来处理,系统会根据 hash 算法来来计算 key-value 的存储位置,我们总是可以通过 key 快速地存.取 value.下面就来分析 HashMap 的存取. 一.定义 HashMap 实现了 Map 接口,继承 AbstractMap.其中 Map 接口定义了键映射到值的规则,而 AbstractMap 类提供

【Java】Java集合框架笔记

今天在QQ群上跟人家交流,错误得把List接口说成了ArrayList的父类,当时脸都红了,不行,一定要跪着回去复习Java,所以把Java的书拿出来,把集合框架的认真仔细的看了一遍,在EverNote上写了一篇笔记,所以搬到博客上来跟大家分享一下.以下就是了. Java集合框架支持以下两种类型的容器: 一种是为了存储一个元素的集合,简称为集合(collection) 另一种是为了存储键值对,成为图(map) 另外:Java集合框架内的所有实例类都实现了Clonable和Serializable

Java集合详解4:HashMap和HashTable

Java集合详解4:HashMap和HashTable 今天我们来探索一下HashMap和HashTable机制与比较器的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https://h2pl.github.io/2018/05/10/collection4 更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a724888 我的个

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

Java 集合

在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素. 集合框架提供了遍历集合的以下方法: 使用迭代器 使用for-each循环 使用forEach()方法 使用迭代器 迭代器可以对集合执行以下三个操作: 检查是否有尚未访问的元素. hasNext() 检查是否有下一个访问的元素. next() 删除集合的最后访问元素. remove() 例子1 使用迭代器打印列表的所有元素: import java.util.ArrayLis

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.