Java集合的复习

Posted Seraphjin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
View Code

运行结果:

由于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集合的一个初步了解,我会在后期继续补加实际运用的代码。

 

以上是关于Java集合的复习的主要内容,如果未能解决你的问题,请参考以下文章

Java复习-集合

java基础复习

复习:java集合框架重点部分

java复习(集合一)

Java集合框架复习

Java集合复习Collection