您的位置:首页 > 其它

关于Collection的一点点

2015-06-25 23:16 387 查看
今天学了Collection中的一些东西。

把今天学到重新整理的笔记放在下面(可能有遗漏的)。

之后还写了个代码(没实际业务逻辑)。

具体的用法。

①Collection 集合 有List(有序集合,可重复) Set(无序集合,不可重复),集合中存放的都是元素的引用(地址值)

②Collection 里面有泛型,用<>表示,约束存入集合的类型。通知的是编译器。返回会根据泛型规定的类型进行造型。没有表示的统一是Object,那么接收时

就要根据类型来转型。

③Collection c=new ArrayList();用ArrayList来实现

c.add();增加集合中的元素

c.size();查看集合中存放的元素个数

c.isEmpty();查看集合中有没有存放元素,返回boolean类型

c.clear();清空集合中的元素

c.contains();查看集合中的是否包含指定的元素,返回boolean类型

c.addAll(子集);将给定的集合中的所有元素添加到当前集合中。方法调用完毕,若当前元素产生变化,    返回boolean类型,为true

c.remove();删除集合中与给定元素第一个equals比较相等的,返回类型boolean,成功删除为true

④Iterator迭代器,本身是个接口。用来遍历当前集合的元素,遵循问取删的原则,删不是必要的

Iterator it=c.iterator();//泛型未定类型

while(it.hasNext()){//判断集合中是不是有元素。hasNext()返回的是boolean类型,有则true。

   eg: Object o=it.next();//拿个元素。next是拿了这个元素后,停到下个元素的位置上,等待

    String str=(String)o;}//假如集合里装的是String类型的,则需要强制成String类型,以此类推

⑤迭代器里有自带的删除功能,it.remove();当字符串变量与一个字面量进行比较时,应当使用字面量.equals(变量),可以避免空指针异常

⑥新遍历,也叫增强for,不能代替传统循环,适用于数组,集合的遍历。 for(数据类型 元素,集合名),其实底层还是靠迭代器实现的。所以在此循环中不能

通过集合的方法来进行删除元素。

⑦集合转换为数组 ; 集合中的数据类型[] 数组名=c.toArray(new 数据类型[c.size()]),若存放不下元素。则会创建一个同类型数组并返回。

⑧数组转换为集合; 只能转换为List集合。因为可重复,有序。转换后形成的集合在原基础上不能进行增删,只能进行修改。     

List<Integer>list=Array.asList(数组)。操作集合亦会对原数组起效。如需增加元素,就需要创建新的集合。

       List<Integer>list=new ArrayList<Intrger>(集合名);这样就重新创建了一个包含原集合的新集合。

List(可根据下标进行元素的操作,因为其本身是有序可重复)里面有两个实现类,ArrayList(数组实现,利于查找)和LinkedList(链表实现。利于增删)

list.get(index);获取对应下标的元素值。

list.set(index,E e);替换对应下标的元素值。并返回被替换的元素。

list.add(index,E e);将指定元素插入指定下标,原位置元素及其后元素顺序向后移动。

list.remove(index);删除指定位置上的元素。并将其返回。

list.subList(int start,int end);获取元素的子集,对子集的操作也会影响原集合。

Collection.sort(list);只能对List集合排序。因为有序,可重复。

⑨contains常用于判断集合中是否包含某个指定元素,equals比较的是对象的内容是否相等

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注释里有 返回 两字的,说明可以用相对应的数据类型接受的,

可以拿到eclipse上测试

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collection;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

public class Test {

    public static void main(String[] args) {

        Collection<Integer> c=new ArrayList<Integer>();//创建集合c

        for(int i=0;i<10;i++){//通过for循环为c集合添加元素

            c.add(i);

        }

        System.out.println(c);//输出c集合

        Collection<Integer> c1=new ArrayList<Integer>();//创建集合c2

        c1.add(11);//为c1添加元素

        c1.add(12);//为c1添加元素

        c.addAll(c1);//为c元素添加子集c1

        System.out.println(c);//输出增加子集后的结果

        boolean tf=c.remove(1);//移除c集合中的元素1,有,移除后返回true,反之则返回false

        System.out.println(tf);//输出是否移除

        System.out.println(c);//输出移除后的结果

        boolean tf1=c.contains(c1);//测试c集合中是否包含c1,有就返回true,反之则返回false

        System.out.println(tf1);//输出是否包含的结果

        Iterator<Integer> it=c.iterator();//创建迭代器对数组进行遍历

        while(it.hasNext()){

            System.out.println(it.next());//遍历集合c中的所有元素。

        }

        Integer[] array=c.toArray(new Integer[c.size()]);//将集合c转换成数组array

        for(Integer i:array){//使用增强for遍历数组

            System.out.println(i);//输出遍历结果

        }

        List<Integer> list=Arrays.asList(array);//将数组array转换成集合list,此集合中无法做增删的操作

        System.out.println(list);//输出集合list

        List<Integer> list1=new ArrayList<Integer>(list);//重新创建包含list集合的新集合list1。

        System.out.println(list1);//输出新集合

        System.out.println(list1.get(9));//输出对应下标为9的元素

        int index1=list1.set(1, 99);//将下标为0的元素替换为99,并返回0下标所对应的元素

        System.out.println(index1);//输出被替换的元素

        System.out.println(list1);//输出替换后的结果

        List<Integer> sub=list1.subList(3, 5);//获取list1中的子集,从第3个元素开始,到第5个元素结束。不包含第5元素

        System.out.println(sub);//输出子集

        for(int i=0;i<sub.size();i++){//对子集进行操作,每个元素扩大100倍

            sub.set(i,sub.get(i)*100);

        }

        System.out.println(sub);//输出扩大100倍后的子集

        System.out.println(list1);//对子集的操作。也会影响本集

        Collections.sort(list1);//对集合进行自然排序。Collections是个工具

        System.out.println(list1);//输出排序后的结果

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: