疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java基础Collection集合


 

 Java基础Collection集合

 
1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解)
 
2.学习集合从Collection开始,所有集合都继承了他的方法
 
集合结构如图:
 
 
 
主要学习Collection中的
 
add()方法
 
向集合中添加元素
 
Collection<String> list = new ArrayList<>(); //父类引用指向子类对象
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("a");
 
-----------------------------------------------------------------------------------------------------------
 
remove()方法
 
移除集合中的元素
 
list.remove("a");
 
注意:Collection接口中remove()方法只可以传递固定的元素,不可以传索进去,只是子类重写remove()方法的功能
 
-----------------------------------------------------------------------------------------------------------
 
clear()方法
 
清空集合
 
list.clear();
 
-----------------------------------------------------------------------------------------------------------
 
size()方法
 
获取集合的长度
 
list.size();
 
字符串的长度是length()  数组长度是length属性 不要混淆
 
-----------------------------------------------------------------------------------------------------------
 
contains()方法
 
包含   传入一个值检测集合中是否包含这个元素  返回值Boolean类型
 
通常用来ArrayList集合中去重复元素   
-----------------------------------------------------------------------------------------------------------
 
toArray()方法
 
将集合转为数组
 
Interger[] arr = list.toArray(new Integer[0]);
 
将数组转为集合
 
List<Integer> list = Arrays.aslist(arr);
 
-----------------------------------------------------------------------------------------------------------
 
Collection<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("a");
        System.out.println(list);
        System.out.println(list.toString());
        
        list.remove("a");
        System.out.println(list);
        
        boolean b = list.contains("a");
        System.out.println(b);
        
        String[] str = list.toArray(new String[0]);
        System.out.println(Arrays.toString(str));
        
        List<String> list1 =  Arrays.asList(str);
        
        list.clear();
        System.out.println(list);
 
-----------------------------------------------------------------------------------------------------------
 
遍历集合(删除元素)
 
    public static void main(String[] args) {
        fun2();
 
    }
    /**
     * 普通for删除
     */
    public static void fun(){
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("a");
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).equals("a")){
            //这里的i--   是因为如果找到相连的元素  要把元素向前推一个索引  因为集合删除一个元素,这个元素的索引会被下一个元素覆盖,
 
            //导致下一个元素没有被判读
 
             list.remove(i--);
            }
        }
        System.out.println(list);
    }
    
    /**
     * 增强for删除   
     * 不可以删除元素   增强for没有记录list的索引不可以用来删除
     */
    public static void fun1(){
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("a");
        for (String string : list) {
            if(string.equals("b")){
                list.remove("b");
            }
        }
        System.out.println(list);
    }
    /**
     * 迭代器删除  这里要注意  要用一个值记录iterator.next的值  如果没有记录就不可删除相连的元素
 
     *因为集合你在删除元素的时候索引会向前一个,在执行的时候就会跳到下一个索引了.这里需要理解
     */
    public static void fun2(){
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("a");
        list.add("b");
        list.add("a");
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String string = iterator.next();
            if(string.equals("a")){
                iterator.remove();
            }
        }
        System.out.println(list);
    }
}