java集合怎么复习_Java集合的复习

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

ac9523af2198e5ff2d08b6e0d4c003ec.png

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

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

例如ArrayList类,方便查询:

1 packagejihe;2

3 importjava.awt.List;4 importjava.util.ArrayList;5 importjava.util.Iterator;6

7 public classStudy {8 public static voidmain( 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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagejihe;2

3 importjava.util.LinkedList;4

5 public classExample {6

7 public static voidmain(String[] args) {8 String a = "A", b = "B", c = "C", test = "Test";9 LinkedList list = new LinkedList();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

运行结果:

20845c5886b809bee9754278059169b1.png

由于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 packagejihe;2

3 importjava.util.Collection;4 importjava.util.HashMap;5 importjava.util.Iterator;6 importjava.util.LinkedList;7 importjava.util.Map;8 importjava.util.Set;9

10 public classExample {11

12 public static voidmain(String[] args) {13 Map map=new HashMap();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 }

12e7cc52c8ed9ced7cd32e2349e63ad4.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值