关于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);//输出排序后的结果
}
}
- 关于Collection的一点点
- 关于创业的一点点
- 关于败家的一点点感悟
- 关于Enumeration的一点点学习体会。。。
- 关于人生的一点点思考
- 关于latch的一点点理解
- 关于指针的一点点感受
- 关于CSS的一点点总结
- 关于MapWinGis的一点点了解
- 关于中断的一点点认识
- 一点点关于找工作的体会
- 关于校内的一点点想法
- 关于异常的一点点小结
- 关于技术交流的一点点看法
- 关于技术交流的一点点看法
- 关于中断的一点点认识
- 关于内存单元的一点点
- 关于前端的一点点感触
- 创建和遍历二叉树
- 使用本地JConsole监控远程JVM(最权威的总结)
- [Java]学习笔记,随笔【二】
- Lua面向对象编程系列-通过Table和Closure来实现类机制
- 【字符串操作】截取字符串
- 关于Collection的一点点
- Gson解析多层嵌套的数组出现的问题
- 站在技术人员的角度说两句找合伙人的事情
- The processing instruction target matching "[xX][mM][lL]" is not allowed.
- PHP模拟链表_学习链表的一些操作
- 用git下载linux源码
- PHP学习笔记(四):require、require_once和include、include_once的区别
- php base64_decode 解码方法
- PHP源码加密,以前只知道zend guard,今天才知道,原来还有个 ioncube