Java中的集合功能整理

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.           }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值