关于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);//输出排序后的结果
}
}
把今天学到重新整理的笔记放在下面(可能有遗漏的)。
之后还写了个代码(没实际业务逻辑)。
具体的用法。
①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);//输出排序后的结果
}
}
相关文章推荐
- C\C++代码优化的27个方法
- 多线程
- 【字符串操作】截取字符串
- Lua面向对象编程系列-通过Table和Closure来实现类机制
- TCP带外数据学习总结(概念,发送接收过程,数据到达检测,代码实现)
- 使用本地JConsole监控远程JVM(最权威的总结)
- linux下vi编辑文件
- Halcon相机标定
- 创建和遍历二叉树
- RxJava概述
- [Java]学习笔记,随笔【二】
- LintCode-搜索区间
- 51Nod 1060 最复杂的数
- 数据结构概述
- Halcon标定步骤
- Robot Framework中对出错用例处理的策略
- Centos学习笔记之grep命令
- 安装DB2 FIXPACK
- [LeetCode] Basic Calculator II 基本计算器之二
- Robot Framework中对出错用例处理的策略