首先集合的目的主要是用来存放数据的,其实在java中数组也可以用来存放数据,但是有时我们并不知要存放多少数据,这时,用数组存放数据就会不是很适用了;而集合可以使程序能方便的存储和操作数目不固定的一组数据;在集合中只能存放对象的引用,不可以存放基本数据类型;但是在java中,有基本数据类型的包装类,所以在操作基本数据类型的数据是会自动的进行装箱和拆箱的操作,是基本数据类型也变成引用类型。
java中的集合分为三类,有list,set,map,其中list和set都继承了collection接口。
list:存放的是有序可重复的数据,其中有序是指出的顺序和放的顺序是一样的,list下的分支有ArrayList,LinkList,vector;
ArrayList:代表长度可变得数组,允许对元素进行快速的随机访问,但是插入和删除元素的速度慢。
LinkList:采用链表的结构,插入和删除元素较快,随机访问速度则是比较慢。
Vector:是线程安全的集合
Set:存放的是无序且不可重复的数据,在用add()方法添加对象时,会调用equals()方法把新的对象和既有对象进行比较判断是有重复;set下的分支:HashSet,TreeSet,LinkhashSet.
HashSet:按照哈希算法来存取集合中的对象,存取速度较快。
TreeSet:实现了sortedSet接口,具有排序的功能。
Map:是一种把键对象和值对象进行映射的集合,每一个元素都是键值对,包含键和值;从Map中取元素是只需要给出键对象就会返回对应的值对象。在Map中键对象不可以重复,但是值对象可以重复,同时若是键对象重复了,会用新的键对象覆盖旧的键对象。Map下的分支有HashMap,TreeMap
HashMap:当两个键对象通过equals()方法比较为true时,那么这两个键对象的hashCode()方法返回的哈希码一样
TreeMap:可以对键对象进行排序!
最后赋上一段代码,用来统计字符的:
转载地址:
package csdn; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; public class CharacterCount { public static void main(String[] args) { System.out.println("请输入字符串:"); //从控制台输入字符串 Scanner scanner = new Scanner(System.in); String string = scanner.next(); //用来存放没有重复的字符 Set set = new HashSet (); //把输入的字符串转换成字符放到list里,有重复的字符串 List list_old = new ArrayList (); //把set中没有重复的字符放入List中 List list_new = new ArrayList (); //用来进行排序输出 Map map_sort = new TreeMap (); for(int i = 0;i keys = map_sort.keySet(); Iterator it = keys.iterator(); while (it.hasNext()) { Character c = (Character) it.next(); System.out.println(c+":"+map_sort.get(c)); } // for (Character c_sort : keys) { // System.out.println(c_sort+":"+map_sort.get(c_sort)); // } } }