黑马程序员——JAVA基础之简述集合collection
------- android培训、java培训、期待与您交流! ----------
• 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
数组和集合类同是容器,有何不同?
• 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。
集合类的特点:
List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序的。
ArrayList替代。
ArrayList:线程不安全,查询速度快。
LinkedList:链表结构,增删速度快。
get(int index):通过脚标获取元素。
有序集合和无序集合的区别:
有序集合:集合里的元素可以根据key或index访问
无序集合:集合里的元素只能遍历。
有序集合在属性的增加,删除及修改中拥有较好的性能表现。
因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
其实就是集合的取出元素的方式。如同抓娃娃游戏机中的夹子。
迭代器是取出方式,会直接访问集合中的元素。所以将迭代器通过内部类的形式来进行描述。通过容器的iterator()方法获取该内部类的对象。
迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。
迭代器的next方法返回值类型是Object,所以要记得类型转换。
1,添加
add(e); 添加元素
addAll(collection); 将指定 collection 中的所有元素都添加到此 collection 中
import java.util.ArrayList; public class CollectionDemo1
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList a = new ArrayList(); a.add("04");
a.add("05");
a.add("06");
al.addAll(a);
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}
2,删除
remove(e); 移除某一元素
removeAll(collection); 移除此 collection 中那些也包含在指定 collection 中的所有元素
import java.util.ArrayList; public class CollectionDemo2
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList al1 = new ArrayList(); al1.add("01");
al1.add("05");
al1.add("03");
System.out.println("集合:"+al1+"集合长度:"+al1.size()); al.remove("01");
System.out.println("集合:"+al+"集合长度:"+al.size()); al.removeAll(al1);//去交集
System.out.println("集合:"+al+"集合长度:"+al.size()); al.clear();
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}
3,判断
contains(e); 判断是否包含某一元素
isEmpty(); 判断是否为空
import java.util.ArrayList; public class CollectionDemo3
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); System.out.println(al.contains("01"));
System.out.println(al.isEmpty());
}
}
4,获取
iterator();
size();
import java.util.ArrayList;
import java.util.Iterator; public class CollectionDemo4
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); for (Iterator it = al.iterator();it.hasNext(); )
{
System.out.println(it.next());
}
}
}
5,获取交集。
retainAll();
import java.util.ArrayList; public class CollectionDemo5
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList al1 = new ArrayList(); al1.add("01");
al1.add("03");
al1.add("06");
System.out.println("集合:"+al1+"集合长度:"+al1.size()); al.retainAll(al1);//取交集
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}
6,集合变数组:
toArray();
1,add方法的参数类型是Object。以便于接收任意类型对象。
2,集合中存储的都是对象的引用(地址)
import java.util.ArrayList; public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); Object[] obj = al.toArray();
for (int i=0;i<obj.length;i++)
{
System.out.println(obj[i]);
}
}
}
黑马程序员——JAVA基础之简述集合collection的更多相关文章
- 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象
------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...
- 黑马程序员——JAVA基础之Map集合
------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...
- 黑马程序员——JAVA基础之List集合
------- android培训.java培训.期待与您交流! ---------- Collection : |--List:元素是有序的,元素可以重复.因为该集合体系有索引. | ...
- 黑马程序员——JAVA基础之简述设计模式
------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...
- 黑马程序员——JAVA基础之set集合
------- android培训.java培训.期待与您交流! ---------- Set: 元素是无序(存入和取出的顺序不一定一致),元素不可以重复. Set接口中常用的类: ...
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
------- android培训.java培训.期待与您交流! ---------- 多线程: 进程和线程: 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者 ...
- 黑马程序员——JAVA基础之简述 类的封装
------- android培训.java培训.期待与您交流! ---------- 类的封装(Encapsulation) 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装优 ...
- 黑马程序员——JAVA基础之Vector集合
------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的. 因为枚举的名称 ...
- 黑马程序员——JAVA基础之简述 类的继承、覆写
------- android培训.java培训.期待与您交流! ---------- 继承的概述: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只 ...
随机推荐
- Android文件Apk下载变ZIP压缩包
在azure云存储中 上传apk文件 使用ie下载 变成zip压缩包 解决方法 编辑 blob 属性和元数据 修改 内容类型 为 application/vnd.android.package-arc ...
- php的数据访问
方法一:过去时方法 $定义一个变量 = $mysql_connect("要连接的服务器,默认是 localhost","登录所使用的用户名,默认是 root", ...
- hdu4597 区间dp
//Accepted 1784 KB 78 ms //区间dp //dp[l1][r1][l2][r2] 表示a数列从l1到r1,b数列从l2到r2能得到的最大分值 // #include <c ...
- HDU 3336 - Count the string(KMP+递推)
题意:给一个字符串,问该字符串的所有前缀与该字符串的匹配数目总和是多少. 此题要用KMP的next和DP来做. next[i]的含义是当第i个字符失配时,匹配指针应该回溯到的字符位置. 下标从0开始. ...
- kali linux SET工具包
尝试使用SET生成Teensy脚本是出现问题 1.出现错误 [!] Something went wrong, printing the error: [Errno 2] No such file o ...
- sql server和oracle的差异
.部分SQL语句差异 (1)SQL:select top 10 * from table ORA: select * from table where rownum<11(2)SQL:S ...
- hdu 2049
Ps:WA了无限次...简直做到崩溃..高中学的知识都忘了....这道题就是跟2048差不多.. 从N个人里选M个人,有Cmn种选法,然后就是M的错排*Cnm 代码: #include "s ...
- UVA11149 矩阵快速幂
首先我们来想一下计算A+A^2+A^3...+A^k. 如果A=2,k=6.那你怎么算 2+22+23+24+25+26 = ?= (2+22+23)*(1+23) 如果A=2,k=7.那你怎么算 2 ...
- MVC中Asp.Net管道(二)
Asp.Net管道: 1.在工作进程w3wp.exe中,利用asp.net_isapi加载.NET运行时,6.0中引入了应用程序池的概念,一个工作进程对应的一个应用程序池.一个应用呢程序池可以加载一个 ...
- 初始React Native
1.何是React Native: React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目.支持用开源的JavaScript库React.js来开 ...