黑马程序员技术交流社区

标题: 我的集合基础总结 [打印本页]

作者: 夏木南生    时间: 2015-9-12 11:21
标题: 我的集合基础总结
本帖最后由 夏木南生 于 2015-9-12 11:27 编辑
学完了javase之后对自己所理解的集合做一个小结,如有出入欢迎吐槽
下面是我自己画的一张图,简单的对集合做一个分类



              1,集合类接口的公共的成员方法:                           boolean add(E e)     //添加元素
                           boolean remove(Object o)    //删除元素
                           void clear()                               //删除整个集合的元素
                           boolean contains(Object o)    //判断集合内是否包含该元素
                           boolean isEmpty()                       //判断集合是否为空
                           int size()                                         //定义集合的大小
                           boolean retainAll(Collection c)     //判断是否与集合有交集如果有 则返回true 并且把2个集合中相同的元素赋值给原集合
   
  1. public static void main(String[] args) {          //测试<span style="background-color: rgb(255, 255, 255);">retainAll方法</span>
  2.                 Collection<String> c =new ArrayList<String>();
  3.                 c.add("1");
  4.                 c.add("2");
  5.                 c.add("3");
  6.                 c.add("4");
  7.                 Collection<String> c2 =new ArrayList<String>();
  8.                 c2.add("4");
  9.                 c2.add("5");
  10.                 c2.add("6");
  11.                 c2.add("7");
  12.                 boolean b = c.retainAll(c2);
  13.                 System.out.println(b);
  14.                 System.out.println(c);
  15.                 //程序的输出结果是
复制代码
                 
             2,Vector的特有功能
                          public void addElement(E obj)    //将指定的类型对象添加到此集合的末尾,将其大小增加 1
                          public E elementAt(int index)        //根据索引找元素
                          public Enumeration elements()     //返回集合中的所有的元素
             3,LinkedList类特有功能
                          public void addFirst(E e)及addLast(E e)    //将指定元素插入此列表的开头或最后。
                          public E getFirst()及getLast()                    //返回此列表的第一个元素或最后元素。
                          public E removeFirst()及public E removeLast()     //移除并返回此列表的第一个元素或最后一个元素
            集合的遍历: Itrator
                        
  1. public static void main(String[] args) {
  2.                 Collection<Integer> c =new ArrayList<Integer>();
  3.                 c.add(1);
  4.                 c.add(2);
  5.                 c.add(3);
  6.                 c.add(4);
  7.                 Iterator<Integer> it = c.iterator();
  8.                 while(true){
  9.                         if(it.hasNext()){
  10.                                 System.out.println(it.next());
  11.                         }
  12.                 }
  13.         }
复制代码
             注意集合修改元素的时候有2种方式,1,迭代器遍历元素,迭代器修改元素,2 集合遍历元素,集合修改元素 否则修改元素则会报一个并发修改的异常.
              解决方案
                        a:迭代器遍历,迭代器修改(ListIterator)
                                元素添加在刚才迭代的位置
                        b:集合遍历,集合修改(size()和get())
                                元素添加在集合的末尾
  1. public static void main(String[] args) {
  2.                 //迭代器遍历  迭代器修改
  3.                 ArrayList<Integer> arr =new ArrayList<Integer>();
  4.                 arr.add(1);
  5.                 arr.add(2);
  6.                 arr.add(3);
  7.                 arr.add(4);
  8.                 ListIterator<Integer> it = arr.listIterator();
  9.                 while(it.hasNext()){       
  10.                         Integer i = it.next();
  11.                                         if(i==2){
  12.                                                 it.add(100);
  13.                                         }                                       
  14.                 }
  15.                 System.out.println(arr);
  16.         }
复制代码
  1. public static void main(String[] args) {
  2.                 //集合遍历  集合修改
  3.                 ArrayList<Integer> arr =new ArrayList<Integer>();
  4.                 arr.add(1);
  5.                 arr.add(2);
  6.                 arr.add(3);
  7.                 arr.add(4);
  8.                 for(int i=0;i<arr.size();i++){
  9.                         Integer x = arr.get(i);
  10.                         if(x==2){
  11.                                 arr.add(100);
  12.                         }
  13.                 }
  14.                 System.out.println(arr);
  15.         }
复制代码


           3,Map接口成员方法
                   V put(K key,V value)          //添加键值                                      V remove(Object key)           //删除
                   void clear()                                 //清除
                   boolean containsKey(Object key)      //根据键判断值是否存在
                   boolean containsValue(Object value)   //根据值判断键是否存在
                   Set<K> keySet()                            //获取map中的所有的元素
                   boolean isEmpty()                     //判断是否为空
                   int size()                                            //定义map的大小
                   Map集合遍历:
                              方式1:根据键找值
                                          获取所有键的集合
                                          遍历键的集合,获取到每一个键
                                          根据键找值
                             方式2:根据键值对对象找键和值
                                         获取所有键值对对象的集合
                                         遍历键值对对象的集合,获取到每一个键值对对象
                                         根据键值对对象找键和值
  1. //方式1
  2.         public static void main(String[] args) {
  3.                 Map<Integer, String>  map =new HashMap<Integer, String>();
  4.                 map.put(1, "hello");
  5.                 map.put(2, "world");
  6.                 map.put(3, "java");
  7.                 Set<Integer> set =map.keySet();
  8.                 for(Integer key :set){
  9.                         String s = map.get(key);
  10.                         System.out.println(key+"---"+s);
  11.                 }
  12.         }       
复制代码

  1. <div class="blockcode"><blockquote>//方式二
  2.         public static void main(String[] args) {
  3.                 Map<Integer, String>  map =new HashMap<Integer, String>();
  4.                 map.put(1, "hello");
  5.                 map.put(2, "world");
  6.                 map.put(3, "java");
  7.                 Set<Entry<Integer, String>> set = map.entrySet();
  8.                 for(Entry<Integer, String> en :set){
  9.                         Integer i = en.getKey();
  10.                         String s = en.getValue();
  11.                         System.out.println(i+"---"+s);
  12.                 }
  13.         }       
复制代码


                    关于集合的基础部分就写这些吧,正在整理集合的高级部分.









作者: 天涯莫名    时间: 2015-9-12 21:19
路过,听厉害的
作者: 纳木错的程序猿    时间: 2015-9-12 21:38
新手求指导,就是学习集合的时候要注意哪些东西吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2