关于Collection的一点点

来源:互联网 发布:mac电脑双系统切换 编辑:程序博客网 时间:2024/04/30 05:09

今天学了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);//输出排序后的结果
    }
}

0 0
原创粉丝点击