java中常用的集合类

合集下载

java中常用的数据结构

java中常用的数据结构

java中常用的数据结构
Java中常用的数据结构有:
1. 数组(Array):一组具有相同类型的数据元素的集合,通
过索引来访问元素。

2. 链表(LinkedList):由若干个节点组成,每个节点包含数
据和指向下一个节点的指针。

3. 栈(Stack):一种后进先出(LIFO)的数据结构,只允许
在栈顶进行插入和删除操作。

4. 队列(Queue):一种先进先出(FIFO)的数据结构,只允
许在队头和队尾进行插入和删除操作。

5. 集合(Set):一种不允许重复元素的数据结构,常见的实
现类有HashSet和TreeSet。

6. 列表(List):一种有序的数据结构,允许重复元素,常见
的实现类有ArrayList和LinkedList。

7. 字典(Map):一种键值对的数据结构,以键作为唯一标识
符来存储和访问元素,常见的实现类有HashMap和TreeMap。

8. 堆(Heap):一种可以快速找到最大值(或最小值)的数
据结构,常用于优先队列的实现。

9. 树(Tree):一种层次关系的数据结构,包含根节点、子节
点和叶子节点等。

10. 图(Graph):由节点和节点之间的关系(边)组成的数据结构,常用于描述网络等复杂关系。

这些数据结构在Java中都有对应的类或接口,可以根据具体
的需求选择合适的数据结构来使用。

java集合

java集合

比较指定的对象与列表是否相等。 E get(int index)
返回列表中指定位置的元素。
int indexOf(Object o)
返回列表中首次出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
Iterator iterator()
<E>
返回以正确顺序在列表的元素上进行迭代的迭代器。
int lastIndexOf(Object o)
List接口和LinkedList类 3-3
• 第二步:具体实现
public clas1s、Fir添stL加eve头lTit条leD、B3以{ 及最末条新闻标题 public static void main(String[] args) { FirstL2ev、elT获itle取car头= n条ew、Fir以stL及eve最lTit末le(1条, "汽新车闻", "标管理题员", new Date()); FirstLevelTitle medical = new FirstLevelTitle(2, "医学", "管理员",new Date()); 3、删除头条、以及最末条新闻标题
iterator() 返回在此 collection 的元素上进行迭代的迭代器。
remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操
作)。 size()
返回此 collection 中的元素数。 toArray()
返回包含此 collection 中所有元素的数组。
返回列表中最后出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
List常用方法

arraylist修改元素的方法

arraylist修改元素的方法

arraylist修改元素的方法ArrayList是Java中常用的集合类,它提供了一种便捷的方式来存储和操作数据。

在使用ArrayList时,经常需要修改元素的值。

本文将介绍几种常用的方法来修改ArrayList中的元素。

一、使用set方法修改元素ArrayList的set方法可以用于修改指定位置上的元素的值。

该方法接受两个参数,第一个参数为要修改的位置,第二个参数为要修改成的值。

下面是一个示例代码:```ArrayList<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");System.out.println("修改前:" + list);list.set(1, "grape");System.out.println("修改后:" + list);```运行结果为:```修改前:[apple, banana, orange]修改后:[apple, grape, orange]```从运行结果可以看出,使用set方法可以将指定位置上的元素值替换为新的值。

二、使用replaceAll方法修改元素ArrayList的replaceAll方法可以用于将所有满足指定条件的元素替换为新的值。

该方法接受一个UnaryOperator参数,用于指定替换规则。

下面是一个示例代码:```ArrayList<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");System.out.println("修改前:" + list);list.replaceAll(e -> e.equals("banana") ? "grape" : e); System.out.println("修改后:" + list);```运行结果为:```修改前:[apple, banana, orange]修改后:[apple, grape, orange]```从运行结果可以看出,使用replaceAll方法可以将满足条件的元素值替换为新的值。

Java中常用的集合类有哪些?它们的使用场景是什么?

Java中常用的集合类有哪些?它们的使用场景是什么?

Java中常用的集合类有哪些?它们的使用场景是什么?Java作为目前最为流行的编程语言之一,其优越的面向对象编程思想和强大的类库使其成为了广大编程爱好者和专业开发者的首选语言之一。

在Java开发中,常用的集合类具有广泛的应用场景,可以大大简化我们代码的编写和维护。

在本篇文章中,我们将介绍Java中常用的集合类有哪些,它们的使用场景是什么,以及如何选择合适的集合类来应对各种场景。

一、Java中常用的集合类Java中常用的集合类包括List、Set、Map等,具体如下:1.ListList是Java中最基础和最常用的集合类之一,它是一个有序的集合,可以存储重复的元素。

List提供了一系列的方法用来操作列表中的元素,如添加、删除、获取、修改等。

常见的List有ArrayList 和LinkedList。

2.SetSet是Java中的另一个基础集合类,它是一个无序的集合,不允许存储重复的元素。

Set提供了一系列的方法用来操作集合中的元素,如添加、删除、获取等。

常见的Set有HashSet、TreeSet。

3.MapMap是Java中常用的映射关系集合,它存储键值对,支持通过键来访问值。

Map提供了一系列的方法用来操作映射关系,如添加、删除、获取、修改等。

常见的Map有HashMap、TreeMap、ConcurrentHashMap等。

二、Java中常用集合类的使用场景不同的集合类有不同的使用场景,我们需要根据具体的业务需求来选择合适的集合类。

下面我们来介绍几种常见的使用场景及其对应的集合类。

1.需要随机访问元素的情况:ArrayListArrayList是Java中常用的集合类之一,它支持随机访问,通过索引访问元素的时间复杂度为O(1),是处理元素数量较大的情况下的较好选择。

2.需要频繁插入或删除元素的情况:LinkedListLinkedList是另一个常用的集合类,它支持快速的插入和删除操作,通过节点互相关联实现。

java中的常用集合类整理

java中的常用集合类整理

java中的常⽤集合类整理⽬录Collection接⼝集合的遍历:iterator 接⼝集合的遍历:增强for循环List接⼝ArrayListSet接⼝Map接⼝HashMapLinkedHashMapTreeMapPropertiesCollections⼯具类总结集合、数组都是对多个数据进⾏存储操作(主要是内存层⾯存储)的结构,简称Java容器。

数组的特点1.数组初始化以后,长度确定不可变2.数组定义好,其元素的类型确定不可变(可能有多态性)3.数组中提供的⽅法有限,对于添加、删除、插⼊数据等操作不⽅便。

4.获取数组中实际元素的个数是没有办法的。

5.数组存储数据的特点是有序、可重复的。

Java集合可分为Collection和Map两种体系,集合存储的优点是解决数组存储数据⽅⾯的弊端。

Collection接⼝:单列数据,⽤来存储⼀个⼀个的对象List接⼝:元素有序,可重复的集合 --> '动态'数组Set接⼝ :元素⽆序、不可重复的集合Map接⼝:双列数据,保存有映射关系(键值对)的集合Collection接⼝向collection接⼝的实现类的对象中添加数据obj时,要求obj所在类要重写equals⽅法。

Abstract Methodsadd(Object e):将元素e添加到集合中size():获取添加的元素个数addAll(Collection coll):将形参coll集合的元素添加到当前集合中clear():清空集合元素,集合仍然存在,只是集合⾥没有元素isEmpty():判断当前集合是否为空contains(Object obj):判断当前集合中是否包含obj,是否包含是通过调⽤obj的equals判断containsAll(Collection coll):判断形参coll中的所有元素是否都存在当前集合中。

remove(Object obj):移除某个元素,同样通过equals寻找移除的元素removeAll(Collection coll):从当前集合中移除coll集合中所有的元素,需要调⽤equals函数retainAll(Collection coll):求两个集合的交集,结果为修改当前集合后的集合。

集合面试题java

集合面试题java

集合面试题java1. 什么是集合?集合是Java中的一个常用数据结构,用来存储一组有序或无序的数据。

它是由一组固定大小的元素构成,可以添加、删除和访问其中的元素。

Java中的集合类被包含在java.util包中。

2. Java中有哪些类型的集合?Java中有三种类型的集合,分别是List、Set和Map。

- List:可以存储有序的元素,可以包含重复的元素。

常见的List类有ArrayList和LinkedList。

- Set:主要用于存放无序、不可重复的元素,不存在索引。

常见的Set类有HashSet和TreeSet。

- Map:用于存储键值对,每个存储的元素包含两部分,即键和值。

常见的Map类有HashMap和TreeMap。

3. ArrayList和LinkedList的区别是什么?ArrayList是基于数组实现的集合,具有一定的随机访问性能,可以快速获取指定位置的元素。

但是它在插入和删除元素时效率相对较低,需要重新排列数组。

而LinkedList是基于链表实现的集合,插入和删除元素时速度比ArrayList要快,但是获取指定位置的元素需要遍历整个链表,效率相对较低。

4. HashSet和TreeSet的区别是什么?HashSet是基于哈希表实现的集合,不保证元素的顺序,具有快速的添加、删除和查找元素的能力。

但是它不支持对元素的有序遍历。

而TreeSet是基于红黑树实现的集合,对元素进行自然排序或者指定排序规则进行排序,可以通过迭代器对元素进行有序的遍历。

5. 什么是迭代器?迭代器是一种遍历集合元素的方式,用于逐个访问集合元素。

它是Java中的一个接口,包含常用的方法,如hasNext()和next()。

Iterator 接口是Java中访问集合元素的标准方式,可以访问所有实现了java.util.Collection接口的集合类。

6. 如何遍历一个集合?Java中提供了三种遍历集合的方式,分别是for-each循环、迭代器和Java 8中的Lambda表达式。

java集合创建方式

java集合创建方式

java集合创建方式Java集合是Java中非常重要的数据结构,它提供了一种高效的方式来存储和操作数据。

Java集合框架包含了许多不同类型的集合,如List、Set、Map等等。

下面将介绍Java集合的创建方式。

1. 使用ArrayList创建List集合ArrayList是Java中最常用的List集合实现,它可以动态地添加和删除元素。

以下是使用ArrayList创建List集合的示例代码: ```List<String> list = new ArrayList<String>();list.add('apple');list.add('banana');list.add('orange');```2. 使用HashSet创建Set集合HashSet是Java中最常用的Set集合实现,它可以用来存储唯一的元素。

以下是使用HashSet创建Set集合的示例代码:```Set<String> set = new HashSet<String>();set.add('apple');set.add('banana');set.add('orange');```3. 使用HashMap创建Map集合HashMap是Java中最常用的Map集合实现,它可以用来存储键值对。

以下是使用HashMap创建Map集合的示例代码:```Map<String, String> map = new HashMap<String, String>(); map.put('apple', 'red');map.put('banana', 'yellow');map.put('orange', 'orange');```4. 使用TreeSet创建有序Set集合TreeSet是Java中用于创建有序Set集合的实现。

java集合添加元素的方法

java集合添加元素的方法

java集合添加元素的方法Java集合是Java中常用的数据结构,用于存储和操作一组对象。

在Java集合中,添加元素是一种常见的操作。

本文将介绍Java集合中添加元素的方法。

Java集合框架提供了多种集合类型,如List、Set和Map,每种集合类型都有自己特定的添加元素的方法。

1. List集合的添加元素方法:List是有序的集合,可以包含重复元素。

常见的List集合实现类有ArrayList和LinkedList。

- 使用add方法:List集合的add方法可以将元素添加到集合的末尾。

- 使用add(index, element)方法:可以将元素插入到指定位置。

2. Set集合的添加元素方法:Set是无序的集合,不允许包含重复元素。

常见的Set集合实现类有HashSet和TreeSet。

- 使用add方法:Set集合的add方法可以将元素添加到集合中。

- 使用addAll方法:可以将另一个集合中的所有元素添加到当前集合中。

3. Map集合的添加元素方法:Map是键值对的集合,每个元素都包含一个键和一个值。

常见的Map集合实现类有HashMap和TreeMap。

- 使用put方法:Map集合的put方法可以将键值对添加到集合中。

- 使用putAll方法:可以将另一个Map集合中的所有键值对添加到当前集合中。

除了上述常见的添加元素方法,Java集合框架还提供了其他一些特殊的添加元素方法。

4. 使用addAll方法添加多个元素:除了上述提到的addAll方法,Java集合框架还提供了addAll方法的变体,可以一次性添加多个元素。

5. 使用Collections类的nCopies方法添加重复元素:Collections类是Java集合框架的工具类,其中的nCopies方法可以创建一个包含指定元素重复多次的集合。

6. 使用Stream API的collect方法添加元素:Java 8引入了Stream API,其中的collect方法可以将Stream 流中的元素收集到一个新的集合中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java中常用的集合类2009年05月20日14:28Collections Framework集合框架是一个统一的架构,用来表示和操作集合.集合框架主要是由接口,抽象类和实现类构成.接口Collection|_____Set| |_____SortedSet||_____ListMap|____SortedMapCollection:集合层次中的根接口,JDK没有提供这个接口的实现类. Set:不能包含重复的元素.SortedSet是一个按照升序排列的元素的Set. List:是一个有序的集合,可以包含重复的元素.提供了按索引访问的方式.有次序,位置不改变.Map:包含了key-value对.Map不能包含重复的key.SortedMap是一个按升序排列key的Map.存储关键字和值.集合框架中的接口,和实现类都是在java.util包当中的在Collection当中提供add()方法可以将元素加入集合当中.在List当中增加了一个get()方法是按照索引获取集合当中的元素.在系统区windows目录下有win.ini有键和对应的值asf=MPEGVideo注册表存储的也是这种类型.就是用Map接口所提供的方法来存储.Map不能包含重复的键,但值是可以重复的.SortedMap是一个按照升序排列key的Map.集合框架中的实现类.ArrayList:我们可以将其看作是能够自动增长容量的数组.实际是采用对象数组实现的.自动增长容量就是当数组不够的时候,再定义更大的数组,然后将数组元素拷贝到新的数组.//ArryListTest.javaimport java.util.*;class ArrayListTest{public static void main(String[] args){ArrayList al=new ArrayList();a1.add("winsun");a1.add("weixin");a1.add("mybole");for(int i=0;i<a1.size();i++){System.out.println(a1.get(i));}//ArrayList实现了List接口//System.out.println(a1);}}add()方法就是给数组增加对象元素.ArrayList实际上就是利用对象数组来实现对象存储的. ArrayList:可以将其看作是能够自动增长容量的数组.增长容量就是定义一个新的数组并将原来元素复制到新的数组当中. 集合类也是从Object类继承来所以有toString()方法.import java.util.*;class Point{int x,y;Point(int x,int y){this.x=x;this.y=y;}public String toString(){return "x="+x+",y="+y;}}class ArrayListTest{public static void main(String[] args){ArrayList al=new ArrayList();a1.add(new Point(3,3));a1.add(new Point(4,4));a1.add(new Point(5,5));for(int i=0;i<a1.size();i++){System.out.println(a1.get(i));}Object[] objs=a1.toArray();//利用ArrayList的toArray()返回一个对象的数组.for(int i=0;i<objs.length;i++){System.out.println(objs[i]);}//Arrays.asList()返回一个列表.List l=Arrays.asList(objs);System.out.println(l);}}利用ArrayList的toArray()返回一个对象的数组.*************Arrays.asList()返回一个列表.可以将一个对象数组转换一个列表返回.返回固定尺寸的列表,当返回以后就不能修改列表的大小了.可以修改列表中元素的值,但不能增加容量.可以用set()方法对值进行修改Object set(int index,Object element)用element替换指定的index的对象Arrays.asList()和Collection.toArray()是作为数组和集合类的一个桥如果想从集合类中获得一个数组可以使用toArray()方法如果想从数组中获得一个列表可以使用asList()方法**************集合框架中的迭代迭代器(Iterator)提供了一种通用的方式来访问集合中的元素. Iterator是java.util包中提供的方法.其中有3个方法hasNext()next()remove()hasNext()判断是否有更多的元素.如果有返回truenext()remove()方法删除上一个被访问的元素.可以实现也可以不实现. 迭代器是指向两个元素之间的.Collection提供了一个iterator()方法,可以返回一个迭代器.凡是继承自Collection的接口或间接的实现类都有这个方法. Iterator it=a1.iterator();it.next();it.remove();while(it.hasNext()){System.out.println(it.next());}remove()方法需要删除上一个返回的元素.需要先调用next()方法后在用remove()的*Iterator it=l.iterator();//返回列表调用迭代器.*返回的列表有时不一定真正实现remove()方法...集合框架中常用的实现类都支持所有的操作.通用方式访问集合中的元素另外定义打印函数public static void printElements(Collection c){Iterator it=c.iterator();while(it.hasNext()){System.out.println(it.next());}}//在main()方法中调用printElements(al);al是ArrayList对象Collection接口派生List接口,ArrayList类实现了List接口Collection->List->ArrayList->al6-4有用的类排序:Collections.sort()不同于Collection类Collections.sort()主要是对列表排序.1.自然排寻natural ordering2.实现比较器Comparator接口取最大元素Collections.max().取最小元素Collections.min().在已经排序的List中搜索指定的元素.Collections.binarySearch().static void sort(List list)方法是按升序对指定列表排序.自然排序法.列表中元素必须都实现了comparable接口.与Arrays.sort()是一样的. comparable接口在ng包当中.实现comparable接口就要实现compareTo()方法.compareTo()大于返回正数,等于返回0,小于返回负数.class Student implements Comparable{int num;String name;Student(int num,String name){this.num=num;=name;}public int compareTo(Object o){Student s=(Student)o;return num>s.num?1:(num==s.num?0:-1);}public String toString(){return num+":"+name;}}public static void printElements(Collection c){Iterator it=c.iterator();while(it.hasNext()){System.out.println(it.next());}}public static void main(String []args){Student s1=new Student(2,"zhangsan");Student s2=new Student(1,"lisi");Student s3=new Student(3,"wangwu");ArrayList a1=new ArryList();a1.add(s1);a2.add(s2);a3.add(s3);Collections.sort(a1);printElements(a1);}排序的时候可以传递一个比较器.Comparator接口.java.util包当中.有两个方法int compare(Object o1,Object o2)两个对象进行比较当对象1大于对象2的时候返回1, 当对象1等于对象2的时候返回一个0,当对象1小于对象2的时候返回一个负数.和boolean equals(Object obj)方法.实现一个比较器.比较器总是和一个特定的类相关.为某一个类指定一个比较器.利用内部类实现比较器接口.**内部类声明为静态方法就不需要产生外部类对象.class Student implements Comparable{int num;String name;Student(int num,String name){this.num=num;=name;}public int compareTo(Object o){Student s=(Student)o;return num>s.num?1:(num==s.num?0:-1);}public String toString(){return num+":"+name;}static class StudentComparator implements Comparator{public int compare(Object o1,Object o2){Student s1=(Student)o1;Student s2=(Student)o2;int result=s1.num>s2.num ? 1 : (s1.num==s2.num ? 0 : -1);if(result==0){ //String类实现了compareTo()方法.result=pareTo();}return result;}}}public static void printElements(Collection c){Iterator it=c.iterator();while(it.hasNext()){System.out.println(it.next());}}public static void main(String []args){Student s1=new Student(2,"zhangsan");Student s2=new Student(1,"lisi");Student s3=new Student(3,"wangwu");ArrayList a1=new ArryList();a1.add(s1);a2.add(s2);a3.add(s3);Collections.sort(a1,Student.StudentComparator()); printElements(a1);}Collections类中提供了一种反序排列方式.本身返回就是一个比较器对象static Comparator reverseOrder()Arrays.sort()也可以指定一个比较器对象static void sort(Object[] a,Comparator c)取最大和最小的元素:Collections.max().Collections.min().在已排序的List中搜索指定的元素: Collections.binarySearch().********Collections类主要对列表操作.Arrays类主要对数组操作.***LinkedList类LinkedList是采用双向循环链表实现的.利用LinkedList实现栈(stack).队列(queue).双向队列(double-ended queue).***************** LinkedList常用方法void addFirst(Object o)void addLast(Object o)Object getFirst()Object getLast()Object remove(int index)boolean remove(Object o)Object removeFirst()Object removeLast()判断是否为空LinkedList继承了一个方法isEmpty()Methods inherited from class java.util.AbstractCollection如果没有包含任何元素返回true,没有包含任何元素返回false队列front rearArrayList底层采用数组完成,而LinkedList则是以一般的双向链表完成,其内每个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素.如果我们经常在List的开始处增加元素,或者在List中进行插入和删除操作,我们应该使用LinkedList,否则的话,使用ArrayList将更加快速.因为插入和删除都要移动数组中的元素.只是访问就用ArrayList,提供了按索引访问的机制.*********HashSetHashSet实现了Set接口的hash table(哈希表),依靠HashMap来实现.应该为要存放到散列表的各个对象定义hashCode()和equals().因为实现了set接口所以不能有重复的元素.散列表:散列表又称为哈希表.散列表算法的基本思想:以结点的关键字为自变量,通过一定的函数关系(散列函数)计算出对应的函数值,以这个值作为该结点存储在散列表中的地址.当散列表中的元素存放太满,就必须进行再散列,将产生一个新的散列表, 所有元素存放到新的散列表中,原先的散列表将被删除.在java语言中,通过负载因子(load factor)来决定何时对散列表进行再散列.例如:如果负载因子是0.75,当散列表中已经有75%的位置已经放满, 那么将进行散列.负载因子越高(越接近1.0),内存的使用率越高,元素的寻找时间越长.负载因子越低(越接近0.0),元素的寻找时间越短,内存浪费越多. HashSet类的缺省负载因子是0.75.HashSet在java.util包当中.需要导入.常用方法boolean add(Object o)void clear()没有get()方法需要使用迭代器Iterator iterator();输出HashSet类实现了Set接口,所以不能有重复的元素.**要根据散列码计算存储位置.而散列码是利用Object类当中的HashCode()函数获得的.而HashCode()函数是通过一个对象的内存地址来得到散列码的.所以要重写public int HashCode()方法.String类实继承了HashCode()方法.import java.util.*;public class HashSetTest {public static void main(String []args){HashSet hs=new HashSet();/* hs.add("one");hs.add("two");hs.add("three");hs.add("one");*/hs.add(new Student(1,"zhangsan"));hs.add(new Student(2,"lisi"));hs.add(new Student(1,"zhangsan"));hs.add(new Student(3,"wangwu"));Iterator it=hs.iterator();while(it.hasNext()){System.out.println(it.next());}}}class Student{int num;String name;Student(int num,String name){=name;this.num=num;}public int HashCode(){return num*name.hashCode();}public boolean equals(Object o){Student s=(Student)o;return num==s.num && name.equals(); }public String toString(){return "name : ="+name;}}需要覆盖HashCode()和equals()方法HashSet->HashCode->对象内存地址**TreeSetTreeSet是依靠TreeMap来实现的.TreeSet是一个有序集合,TreeSet中元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中元素要实现Comparable接口.我们可以在构造TreeSet对象时,传递实现了Comparator接口的比较器对象.java.util包当中TreeSet类import java.util.*;public class TreeSetTest {//如果自定义类对象要加入TreeSet要实现Comparable接口public static void main(String []args){TreeSet ts=new TreeSet(new Student.StudentComparator()); /* ts.add("winsun");ts.add("weixin");ts.add("mybole");*/ts.add(new Student(2,"lisi"));ts.add(new Student(1,"wangwu"));ts.add(new Student(3,"zhangsan"));ts.add(new Student(3,"mybole"));Iterator it=ts.iterator();while(it.hasNext()){System.out.println(it.next());}}}class Student implements Comparable{int num;String name;static class StudentComparator implements Comparator{public int compare(Object o1,Object o2){Student s1=(Student)o1;Student s2=(Student)o2;int result=s1.num>s2.num ? 1 : (s1.num==s2.num ? 0 : -1);if(result==0){ //String类实现了compareTo()方法.result=pareTo();}return result;}}public static void printElements(Collection c){Iterator it=c.iterator();while(it.hasNext()){System.out.println(it.next());}}Student(int num,String name){=name;this.num=num;}public int HashCode(){return num*name.hashCode();}public boolean equals(Object o){Student s=(Student)o;return num==s.num && name.equals();}public int compareTo(Object o){Student s=(Student)o;return num>s.num?1:(num==s.num?0:-1);}public String toString(){return num+":"+name;}}**HashSet是基于Hash算法实现的,其性能通常优于TreeSet. 通常都应该使用HashSet,在需要排序的功能时,才使用TreeSet.**HashMap对key进行散列.keySet()..values()..entrySet()..HashMap是实现了Map接口的Hash表.实现了所有hashmap操作,允许空值和空键.HashSet底层就是hashmap的实现.map接口没有add()方法.要放置元素通过put()方法.Object put(Object key,Object value)获取元素的时候Object get(Object key)通过键获取值Hash表,通过键计算出相对应的存储位置的值,并输出.**********************************常用的方法Set keySet()返回一个键的视图类型是Set.Collection values()返回一个值的视图类型是Collection.Set entrySet()返回一个键值对视图类型是Set.返回的Set集合当中每一个对象都是一个Map.Entry对象. Map.Entry是一个静态的接口.接口中提供了常用方法Object getKey()Object getValue()*****************************import java.util.*;public class HashMapTest{public static void printElements(Collection c){Iterator it=c.iterator();while(it.hasNext()){System.out.println(it.next());}}public static void main(String []args){HashMap hm=new HashMap();hm.put("1", "zhang3");hm.put("2", "li4");hm.put("3", "wang5");System.out.println(hm.get("1"));System.out.println(hm.get("2"));System.out.println(hm.get("3"));Set keys=hm.keySet();System.out.println("-----------keys---------");printElements(keys);Collection values=hm.values();System.out.println("-----------values---------");printElements(values);Set entrySets =hm.entrySet();System.out.println("------------entrySets-----------");printElements(entrySets);Iterator it=entrySets.iterator();while(it.hasNext()){Map.Entry me=(Map.Entry)it.next();System.out.println(me.getKey()+" = "+me.getValue());}}}**TreeMap是实现了sorted Map接口的类TreeMap按照key进行排序.类似HashMap用法**********************HashMap和TreeMap比较和Set类似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的时候,才使用TreeMap.**********************java1.0/1.1集合类Vector:用ArrayList代替Vector.Vector内所有方法都是同步的,存取元素效率低.在多线程中可以使用在Collection类中提供了static list synchronizedList(List list)可以返回一个同步列表可以将列表实参传递进去会返回一个安全的线程同步列表还有static Collection synchronizedCollection(Collection c)static Set synchronizedSet(Set s)Hashtable:用HashMap代替Hashtable需要同步Map的时候可以用Collection类的方法static Map synchronizedMap(Map m)但是还是Hashtable获取的同步Map快一些.Stack:用LinkedList代替Stack.Stack是从java.util.Vector继承而来.还从Vector继承了alementAt()方法.同时Stack还继承了不需要的特性.所以要使用栈的时候要用LinkedList来自己实现. Properties属性类.是从Hashtable继承而来也是存储键值对的. 表示一个持久的属性集合.可以存储win.ini的键值对.在ng.System类当中有static Properties getProperties()检测当前系统的属性可以使用void list(PrintStream out)打印系统属性还可以读取一个配置文件:先建立一个配置文件winsun.ini写入company=winsunauthor=sunxincorpyright=2003-2004先实例化一个Property对象在用void load(InputStream inStream)方法可以从一个输入流中加载一个属性列表.输入流可以用java.io包中的一个类构造.可用Enumeration propertyNames()返回Enumeration对象.返回所有键的枚举.Enumeration是一个接口提供了两个方法boolean hasMoreElements()Object nextElement()需要返回值的时候String getProperty(String key)返回键对应的值import java.util.*;import java.io.FileInputStream;import java.io.*;public class ProTest {public static void main(String []args){/* Properties pps=System.getProperties();pps.list(System.out);*/Properties pps=new Properties();try{pps.load(new FileInputStream("d:/workspace/ProTest/bin/winsun.ini"));Enumeration ENUM=pps.propertyNames();while(ENUM.hasMoreElements()){String str=(String)ENUM.nextElement();String strValue=pps.getProperty(str);System.out.println(str+" = "+strValue);}}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException ex){ex.printStackTrace();}}}static String getProperty(String key)static String getProperty(String key,String def)**********************************迭代器以通用的方式打印集合类的不同对象.。

相关文档
最新文档