类计框架

本文详细介绍了Java中的集合框架,包括集合、列表和映射的基本概念与使用方法。讲解了ArrayList和HashSet的具体应用案例,演示了如何添加、删除及遍历元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、类集框架

1.类集框架是一组类和接口

2.位于java.util包中

3.主要用于存储和管理对象

4.主要分为三大类--集合、列表和映射

集合(set):集合中的对象不按照特定的方式排序,并且没有重复对象

列表:对象按照索引位置排序,可以有重复对象

框架代码:

import java.util.List;

import java.util.ArrayList;

public class Test{

      public static void main(String args []){

      ArrayList<String> arrayList = new ArrayList<String>();//String中只能存放String对象

     

      arrayList.add("b");

      arrayList.add("a");

      arrayList.add("j");

     

      String s = arrayList.get(1);

      System.out.println(s);

      }

}

运行结果:a(长度为3,排列顺序和数组一致)

获取长度代码:int a = arrayList.size();

移除第s个数据代码:arrayList.remove(s);原位置被后面的数据依次占据

代码:

import java.util.List;

import java.util.ArrayList;

public class Test{

      public static void main(String args []){

      ArrayList<String> arrayList = new ArrayList<String>();//String中只能存放String对象

     

      arrayList.add("b");

      arrayList.add("a");

      arrayList.add("j");

      arrayList.add("k");

     

      arrayList.remove(1);

     

      for(int i = 0;i < arrayList.size();i++){

      String s = arrayList.get(i);

      System.out.println(s);

           }

      }

}

运行结果:b j k

二、Collection接口

boolean add(Object o)   向集合当中加入一个对象

void clear()   删除集合当中的所有对象

boolean isEmpty()  判断集合是否为空

rmove(Object o)  从集合中删除一个对象的引用

int size()   返回集中元素数目

代码(以上接口的使用):

import java.util.Set;

import java.util.HashSet;

public class Test{

      public static void main(String args []){

           //hashSet<String>hashSet = new hashSet<String>();

           //Set<String> set = HashSet;

          

           Set<String> set = new HashSet<String>();

          

           boolean m = set.isEmpty();

           System.out.println(m);

           set.add("a");

           set.add("b");

           set.add("c");

           set.add("q");

           set.add("q");//重复元素自动忽略

          

           boolean n = set.isEmpty();

           System.out.println(n);

           int i = set.size();

           System.out.println("clear之前set对象长度是"+i);

          

           set.remove("a");

           int k = set.size();

           System.out.println("remove之后set对象长度是"+k);

          

           set.clear();

           int j = set.size();

           System.out.println("clear之后set对象长度是"+j);

      }

}

运行结果:

true

false

clear之前set对象长度是4

remove之后set对象长度是3

clear之后set对象长度是0

二、iterator(迭代器接口)是一个接口,一个子接口是collection.collection的一个子接口是set,set的一个实现类是HashSet(一一继承)

hasNext()  判断迭代器中是否有下一个对象

next()  返回迭代器中的下一个对象

代码:

import java.util.Set;

import java.util.HashSet;

import java.util.Iterator;

public class Test{

      public static void main(String args []){

           //hashSet<String>hashSet = new hashSet<String>();

           //Set<String> set = HashSet;

          

           Set<String> set = new HashSet<String>();

          

           set.add("a");

           set.add("b");

           set.add("c");

           set.add("q");

           set.add("q");//重复元素自动忽略

           //调用set对象的Iterator会生成一个迭代器对象,用于遍历整个Set

           Iterator<String> it = set.iterator();//生成一个迭代器对象

          

           while(it.hasNext){

                 String s = it.next();

                 System.out.println(s);

           }

          

      }

}

运行结果:b,c

映射(Map):集合中的每一个元素包含一个键对象和一个值对象,键对象不可以重复  ,值对象可以重复

代码:

import java.util.Map;

import java.util.HashMap;

 

public class Test{

      public static void main(String args []){

           HashMap<String,String> hashMap = new HashMap<String,String>();

           Map<String,String> map = hashMap;

          

           map.put("1","q");

           map.put("2","a");

           map.put("3","z");

           map.put("4","w");//存放键值对

           map.put("3","e");

          

           int i = map.size();

           System.out.println(i);

          

           String s = map.get("3");

           System.out.println(s);

           }

}

运行结果:4,e

转载于:https://www.cnblogs.com/java4android/archive/2012/05/09/2493420.html

### 关于Jittor框架的示例代码与使用教程 #### 安装与基础环境配置 为了开始使用 Jittor 深度学习框架,首先需要完成其安装。可以通过以下命令来安装最新版本的 Jittor: ```bash pip install jittor ``` 如果需要 GPU 支持,则需确保本地已正确安装 CUDA 和 cuDNN 驱动程序[^1]。 --- #### 图像分任务中的数据预处理 在实际应用中,通常会涉及图像分的任务。对于此任务的数据预处理部分,可以参考如下代码实现: ```python import jittor as jt from jittor import transform import numpy as np # 数据集路径设置 data_path = "path_to_your_image_folder" # 归一化参数 mean = np.array([0.485, 0.456, 0.406]) std = np.array([0.229, 0.224, 0.225]) # 自定义预处理函数 def preprocess(img): img = img.float32() / 255.0 # 将像素值缩放到 [0, 1] img = (img - mean) / std # 标准化到均值为 0,方差为 1 return img # 加载数据集并设置转换器 dataset = jt.dataset.ImageFolder(data_path).set_attrs( batch_size=32, shuffle=True, transform=transform.Compose([ transform.Resize((224, 224)), # 调整图片尺寸至 224x224 transform.ToTensor(), # 转换为张量 preprocess # 应用自定义预处理 ]) ) ``` 上述代码展示了如何加载图像文件夹作为训练数据,并对其进行必要的预处理操作,如调整大小、标准化等[^4]。 --- #### 构建简单的卷积神经网络模型 以下是基于 Jittor 的简单 CNN 模型构建示例: ```python class SimpleCNN(jt.nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv1 = jt.nn.Conv(3, 32, kernel_size=3, stride=1, padding=1) self.pool = jt.nn.Pool(kernel_size=2, stride=2, op="maximum") self.fc = jt.nn.Linear(32 * 56 * 56, 10) def execute(self, x): x = jt.relu(self.conv1(x)) x = self.pool(x) x = x.view(-1, 32 * 56 * 56) # 展平特征图 x = self.fc(x) return x model = SimpleCNN() print(model) ``` 此代码片段创建了一个小型卷积神经网络,适用于 CIFAR-10 或其他似的图像分任务。 --- #### 训练过程示例 下面是一个完整的训练循环示例,展示如何利用之前定义的 `SimpleCNN` 进行训练: ```python optimizer = jt.optim.SGD(model.parameters(), lr=0.01, momentum=0.9) loss_fn = jt.nn.CrossEntropyLoss() for epoch in range(10): # 假设运行 10 个 epochs for images, labels in dataset: outputs = model(images) loss = loss_fn(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() print(f"Epoch [{epoch+1}/10], Loss: {loss.item():.4f}") ``` 通过 SGD 优化器和交叉熵损失函数,该脚本实现了基本的监督学习流程。 --- #### 其他功能扩展 除了标准的前向传播外,Jittor 提供了灵活的功能支持,允许开发者编写元算子算逻辑。例如,可以直接用 Python 编写复杂的数学运算逻辑,随后由 Jittor 自动生成高效的底层执行代码[^2]。 此外,针对更高级的需求(如自定义 IR),也可以探索 Halide 似的多层抽象机制,从而进一步提升性能调优能力[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值