1.选择合适的集合类。
Set:是一个接口,无序集合,不能包含重复元素。同时身为接口不能生成对象。但是类HashSet和TreeSet实现了该接口,所以通常使用的也是这两个。
HashSet:该集合中主要存放的一些无序元素。如果你只是想用一个‘罐子’盛东西,其他什么都不关心,可以选它。
TreeSet:该集合除了实现Set接口还实现了SortedSet接口。也就是说可以用它来进行一些排序默认升序。当然排序的元素必须具有可比性。也就是说对于基本类型如:Float, Integer,String,Character等
List:接口,允许出现重复元素。与Set另一个不同的地方就是元素有序。如果你对加进‘罐子’里东西很在乎先后。如谁先进去的谁后进去的,第几个是谁比较关心可以选用。但是同样。List是个接口我们通常使用的是两个实现了该接口的两个类arrayLis和LinkedList。
ArrayList:支持对元素的快速访问。但是对插入和删除支持性差。
LinkedList: 对元素的插入和删除性能良好。由于List中元素有序,可以我们不用Iterator对象也可以访问,不过要先调用toArray()方法。才能像操作一个普通数组一样访问。
2.常用类的关系图。这是一个简单图。PS:我保证你能搜到更复杂的。
这里Collection.Set. List都是接口,知道这层实现关系,这三个接口中的方法,就可以被实现接口的类对象所调用。
3.
Collection中的方法:
boolean add()添加一个元素;booleanaddAll( Collection c)添加集合c中所有元素。void clear():清空集合;boolean contain(object o):是否包含元素o。
int size():返回集合中元素个数;booleanisEmpty():是否为空; Object[] toArray():转变成包含此集合中所有元素的数组;boolean remove(object o):去除元素o; booleanremoveAll(collection c)去除集合中c中所有元素;booleanretainAll(Collection c):仅保留c中所有元素 ;Iterator<E> iterator():返回一个Iterator对象,用于遍历集合元素。
HashSet:常用方法基本来源于Collection类,见上:
[java] view plain copy
1. Set<Integer> iset=new HashSet<Integer>();
2. iset.add(Integer.valueOf(3));//这里用了一个封装类,也可以直接用一个基本数据类型
TreeSet:first():返回集合中第一个元素;last():返回集合中最后一个元素。poolFirst()返回集合中第一个元素然后移除。poolLast():返回最后一个元素然后移除。
SortedSet<E>subSet(E,F):返回一个新集合,从E到F,但不包含F。
SortedSet<E>headSet(E):返回一个包含E之前的元素,不包含E;SortedSet<E >tailSet(F)返回F之后元素,包含F。
[java] view plain copy
1. public static void main(String[] args){
2. SortedSet<Integer> iset=new TreeSet<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<4;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. Iterator<Integer> it=iset.iterator();
11. while(it.hasNext()){
12. System.out.println(it.next());
13. }
14.
15. SortedSet<Integer> head_set=iset.headSet(60);
16. for(int j=0;j<head_set.size();j++){
17. System.out.println(head_set.toArray()[j]);
18. }
19. }
ArrayList:get(i):获取第i个元素。intindexOf(object o):返回第一次出现指定元素的下标,没有则是-1;lastIndexOf(object o):返回最后一次出现指定元素索引,没有则返回-1;
set(index, E,)修改指定索引处元素,并返回之前的元素。 List<E>subList(E,F)返回指定下标之间的元素,不包含后者。
[java] view plain copy
1. public static void main(String[] args){
2. List<Integer> iset=new ArrayList<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<4;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. Iterator<Integer> it=iset.iterator();
11. while(it.hasNext()){
12. System.out.println(it.next());
13. }
14.
15. List<Integer> head_List=iset.subList(0, 2);
16. for(int j=0;j<head_List.size();j++){
17. System.out.println(head_List.get(j));//这里也可以转变成数组即调用方法toArray()[j]输出
18. }
19. }
LinekedList: addFirst(O)插入到集合开头;addLast(O):插入到集合尾部。removeFirst():移除第一个元素;removeLast():移除最后一个元素; getFirst():返回第一个元素;getLast():返回最后一个元素。
[java] view plain copy
1. public static void main(String[] args){
2. LinkedList<Integer> iset=new LinkedList<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<2;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. iset.addFirst(5);
11. for(int j=0;j<iset.size();j++){
12. System.out.println(iset.get(j));//虽然linkedList有序,但是要想像普通数组一样操作它。你还得调用toArray()方法。
13. }
14.
15. }
Set:是一个接口,无序集合,不能包含重复元素。同时身为接口不能生成对象。但是类HashSet和TreeSet实现了该接口,所以通常使用的也是这两个。
HashSet:该集合中主要存放的一些无序元素。如果你只是想用一个‘罐子’盛东西,其他什么都不关心,可以选它。
TreeSet:该集合除了实现Set接口还实现了SortedSet接口。也就是说可以用它来进行一些排序默认升序。当然排序的元素必须具有可比性。也就是说对于基本类型如:Float, Integer,String,Character等
List:接口,允许出现重复元素。与Set另一个不同的地方就是元素有序。如果你对加进‘罐子’里东西很在乎先后。如谁先进去的谁后进去的,第几个是谁比较关心可以选用。但是同样。List是个接口我们通常使用的是两个实现了该接口的两个类arrayLis和LinkedList。
ArrayList:支持对元素的快速访问。但是对插入和删除支持性差。
LinkedList: 对元素的插入和删除性能良好。由于List中元素有序,可以我们不用Iterator对象也可以访问,不过要先调用toArray()方法。才能像操作一个普通数组一样访问。
2.常用类的关系图。这是一个简单图。PS:我保证你能搜到更复杂的。
这里Collection.Set. List都是接口,知道这层实现关系,这三个接口中的方法,就可以被实现接口的类对象所调用。
3.
Collection中的方法:
boolean add()添加一个元素;booleanaddAll( Collection c)添加集合c中所有元素。void clear():清空集合;boolean contain(object o):是否包含元素o。
int size():返回集合中元素个数;booleanisEmpty():是否为空; Object[] toArray():转变成包含此集合中所有元素的数组;boolean remove(object o):去除元素o; booleanremoveAll(collection c)去除集合中c中所有元素;booleanretainAll(Collection c):仅保留c中所有元素 ;Iterator<E> iterator():返回一个Iterator对象,用于遍历集合元素。
HashSet:常用方法基本来源于Collection类,见上:
[java] view plain copy
1. Set<Integer> iset=new HashSet<Integer>();
2. iset.add(Integer.valueOf(3));//这里用了一个封装类,也可以直接用一个基本数据类型
TreeSet:first():返回集合中第一个元素;last():返回集合中最后一个元素。poolFirst()返回集合中第一个元素然后移除。poolLast():返回最后一个元素然后移除。
SortedSet<E>subSet(E,F):返回一个新集合,从E到F,但不包含F。
SortedSet<E>headSet(E):返回一个包含E之前的元素,不包含E;SortedSet<E >tailSet(F)返回F之后元素,包含F。
[java] view plain copy
1. public static void main(String[] args){
2. SortedSet<Integer> iset=new TreeSet<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<4;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. Iterator<Integer> it=iset.iterator();
11. while(it.hasNext()){
12. System.out.println(it.next());
13. }
14.
15. SortedSet<Integer> head_set=iset.headSet(60);
16. for(int j=0;j<head_set.size();j++){
17. System.out.println(head_set.toArray()[j]);
18. }
19. }
ArrayList:get(i):获取第i个元素。intindexOf(object o):返回第一次出现指定元素的下标,没有则是-1;lastIndexOf(object o):返回最后一次出现指定元素索引,没有则返回-1;
set(index, E,)修改指定索引处元素,并返回之前的元素。 List<E>subList(E,F)返回指定下标之间的元素,不包含后者。
[java] view plain copy
1. public static void main(String[] args){
2. List<Integer> iset=new ArrayList<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<4;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. Iterator<Integer> it=iset.iterator();
11. while(it.hasNext()){
12. System.out.println(it.next());
13. }
14.
15. List<Integer> head_List=iset.subList(0, 2);
16. for(int j=0;j<head_List.size();j++){
17. System.out.println(head_List.get(j));//这里也可以转变成数组即调用方法toArray()[j]输出
18. }
19. }
LinekedList: addFirst(O)插入到集合开头;addLast(O):插入到集合尾部。removeFirst():移除第一个元素;removeLast():移除最后一个元素; getFirst():返回第一个元素;getLast():返回最后一个元素。
[java] view plain copy
1. public static void main(String[] args){
2. LinkedList<Integer> iset=new LinkedList<Integer>();
3. Scanner sc=new Scanner(System.in);
4. System.out.println("请输入整型:");
5. for(int i=0;i<2;i++){
6. System.out.println("请输入第"+(i+1)+"个数字");
7. int value=sc.nextInt();
8. iset.add(value);
9. }
10. iset.addFirst(5);
11. for(int j=0;j<iset.size();j++){
12. System.out.println(iset.get(j));//虽然linkedList有序,但是要想像普通数组一样操作它。你还得调用toArray()方法。
13. }
14.
15. }