connection
|
|
---------------------------
list set
| |
| |
-------------------- ------------------
| | | | |
| | | | |
ArrayList LinkedList Vector HashSet TreeSet
为什么会出现这么多的容器?
因为每个容器对数据的存储方式不同
这个存储方式称之为:数据结构
==========================================================================================================================
集合框架共性的操作
package CollectionDemo;
import java.util.*;
/**
* add方法的参数类型是Object 方便接收各种任意类型的对象
* 集合中存储的都是对象的引用或者是地址
* @author bing
*
*/
public class CollectionDemo {
public static void main(String[] args) {
base_Method2();
}
public static void base_Method2()
{
ArrayList al1 = new ArrayList();
ArrayList al2 = new ArrayList();
al1.add(new Person("Kobe","男",34));
al1.add(new Person("Lebron","男",27));
al1.add(new Person("姚明","男",34));
al2.add(new Person("Kobe","男",34));
al2.add(new Person("Bosh","男",27));
al2.add(new Person("姚明","男",34));
al1.add("A");
al2.add("A");
al1.retainAll(al2);//取交集,al1中只会保留和al2相同的元素
sop(al1);//这里只会输出A 只有A为交集中的元素
sop(al2);
}
public static void base_Method()
{
ArrayList a1 = new ArrayList();
// 1 ,添加元素
Person p1 = new Person("林书豪","男",21);
a1.add(p1);
a1.add(new Person("Kobe","男",34));
a1.add(new Person("Lebron","男",27));
a1.add(new Person("姚明","男",34));
a1.add("asdfghj");
// 2, 获取元素
sop("size"+a1.size());
sop(a1);//打印集合删除前的集合
//3, 删除元素
a1.remove(p1);
//a1.remove("asdfghj");
sop(a1);//打印删除后的集合
//4 , 判断元素
sop("asdfghj是否存在"+ a1.contains("asdfghj"));
sop("集合是否为空"+a1.isEmpty());
a1.clear();//清空集合
sop(a1);//打印清空后的集合
sop("集合是否为空"+a1.isEmpty());
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
==========================================================================================================================
迭代器
public static void method_get()
{/**
*迭代器是用来取出集合中元素的方法
*取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素,
*那么取出方式就被定义成了内部类。
*而每一个容器的数据结构是不同的,所以取出动作的动作细节也不相同。但是有共性
*内容判断和取出,那么可以将其共性抽取。这些内部类都符合一个规则。该规则就是
*Iterator接口。那么如何获取集合的取出对象呢?通过对外提供一个方法
*这个方法就是iterator();
*/
ArrayList al1 = new ArrayList();
al1.add("java01");al1.add("java02");al1.add("java03");
//获取迭代器,用于输出集合中的元素
Iterator it = al1.iterator();//al1.iterator()返回的是一个Iterator的子类对象
//Iterator 是个接口 无法自行生产对象 但是可以由al中的方法生产对象并返回
sop(it.next());sop(it.next());
//可以通过循环输出所有的集合中的元素
/*while(it.hasNext())//hasNext()如果集合中还有元素 则返回true
{
sop("while中的");
sop(it.next());
}*/
for(Iterator it1 = al1.iterator();it1.hasNext();)
{
sop(it1.next());
}
}
==========================================================================================================================
List的共性方法以及操作
package ListDemo;
import java.util.*;
/**
* collection
* |--List:元素是有序的,元素可以重复,因为该集合体系有索引
* |--set:元素是无序的,元素不可以重复 ,该集合体系无索引
*
* List:
* 特有方法,凡是可以操作角标的方法都是该体系的特有方法
* 增
* add(index),element);
* addAll(index,Collection)//添加一堆元素
* 删
* remove(index)
* 改
* set(index,element)
* 查
* get(index)
* subList(from,to)
* listIterator()//list特有的迭代器
* @author bing
*
*/
public class ListDemo {
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//在指定位置添加元素
sop("原集合是"+al);
al.add(1, "java");
sop("在角标为1位置添加元素后的集合是"+al);
//删除指定位置的元素
al.remove(4);
sop("在角标为4位置删除元素后的集合是"+al);
//修改元素 修改角标为4的元素
al.set(3, "javahello");
sop(al);
//通过角标获取 元素
sop("al.get(3)"+al.get(3));
//获取所有所有元素
for(int i = 0;i<al.size();i++)//注意这里是al.size()
{
System.out.println("al("+i+")"+al.get(i));
}
Iterator it = al.iterator();
Iterator ti = al.listIterator();
while(it.hasNext())
{
sop("next"+it.next());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
==========================================================
迭代器
/**在迭代过程中,删除元素 这里需要注意的是 在迭代的过程中可能会发生并发访问异常
* 注意:访问List的方法有两类一种是集合的方式比如al.add()这是属于集合的访问 方式 另一种是迭代器的方式 不能再迭代的同时再用集合的
* 方法访问List 因为---迭代器在建立的时候是根据原来的List建立的 如果在迭代的过程,对List进行集合操作,会造成迭代器无法确认List
* 是原List还是操作后的List 造成并发访问异常。如果要在迭代的过程中对List进行操作,那么参阅Iterator类中的方法。其实Iterator类
* 中就三个方法hasNext(),next(),remove(),所以可以在迭代的过程中根据条件删除元素
* 从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的
* 其他方式修改了该迭代器所指向的集合,则迭代器的行为是不明确的。
* 但是ListIterator功能很多 这是List集合特有的迭代器
* 可以向前遍历 可以向后遍历 可以删除添加 很好很强大
*/
sop(arrl);
while(ite.hasNext())
{
Object obj = ite.next();//取出List中的对象
if(obj.equals("java1"))//与给定条件判断
{
ite.remove();//删除元素
}
}
sop(arrl);
分享到:
相关推荐
基本数据类型笔记.py
本笔记主要关注C语言中的数据类型,这是理解任何编程语言的基础。数据类型决定了变量可以存储哪种类型的数据以及如何操作这些数据。在C语言中,数据类型大致可以分为以下几类: 1. 基本数据类型: - **整型**:...
ABAP-数据类型学习笔记
1. **基本概念**:首先,笔记可能会定义数据结构的基本概念,如什么是数据、数据元素、数据对象、数据结构和抽象数据类型(ADT)。它会解释数据结构是如何组织和存储数据的,以及如何通过不同的方式访问和操作这些...
在学习ABAP时,了解其数据类型是基础中的基础。本文将详细解析ABAP的数据类型及其相关的语法特性。 首先,`DATA`语句是ABAP中定义变量的关键语句,允许我们声明变量并指定其数据类型。变量名可以包含下划线,最多30...
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
javaSE基础数据类型学习笔记
1. 数据类型 Java 中的数据类型可以分为基本数据类型和引用数据类型两种。基本数据类型包括整数型、浮点数型、字符型、布尔型等,引用数据类型包括类、接口、数组等。 1.1 标识符 标识符是用户编程时使用的名字,...
2. 数据类型:数据类型定义了一组值的集合以及定义在这个集合上的操作。原子类型包括基本的数据类型,如整型、浮点型、字符型等;结构类型是由若干原子类型组合而成的复杂类型,例如结构体。 3. 抽象数据类型(ADT...
C语言学习笔记基础数据类型
郝斌数据结构笔记 数据结构概述: 数据结构是指在计算机中对数据的存储、组织和管理的方式。它是软件最核心的课程,学完了啥也干不了。数据结构 = 个体的存储 + 个体的关系存储,算法 = 对存储数据的操作。 知识点...
本篇学习笔记将详细解析Java中的数据类型转换及其相关的知识点。 首先,我们需要了解Java的基本数据类型,它们分为两大类:整型和浮点型。整型包括byte、short、int和long,浮点型包括float和double。此外,还有...
1. **数据类型** - Java中的基本数据类型包括`boolean`、`byte`、`char`、`short`、`int`、`long`、`float`、`double`等。 - 基本数据类型的大小及取值范围如下: | 类型名称 | 大小(bits) | 取值范围 | | ----...
Java 是一种面向对象的编程语言,Java 语言中有两大类数据类型:基本数据类型和引用数据类型。基本数据类型是 Java 语言的基础,理解基本数据类型是学习 Java 的关键。 Java 基本数据类型有八种,它们分别是 byte、...
在数据类型的采集方面,数据预处理笔记详细介绍了结构化数据、半结构化数据和非结构化数据的概念和采集方法。结构化数据可以使用关系型数据库表示和存储,通常表现为二维表形式,每一行数据代表一个实体的信息。半...
在这些笔记中,你会学到如何使用Pandas读取和预处理数据,包括处理缺失值、异常值、数据类型转换以及数据聚合等操作。同时,Numpy的矩阵运算和统计函数也会被深入讲解,这对于理解和处理复杂的数据模型至关重要。 ...
一个全面的关VC++数据类型的总结,VARIANT, _variant_t,COleVariant 转换成字符中及相互间转化 不同时间间转换
(一)数据元素、数据结构、抽象数据类型等概念 (二)算法设计的基本要求 (三)语句的频度和估算时间复杂度 二、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储结构 2.链式存储结构 3.线性表的应用 三...
数据类型不仅包括基本类型(如C++中的char、int等),还包括自定义的抽象数据类型,它定义了一组特定操作和与之关联的值集合。抽象数据类型隐藏了实现细节,仅对外提供接口,提高了代码的可读性和复用性。面向对象...