获取集合中元素的方法总结

在开发中获取集合里面的集合是很平常的一件事情,但是取数据的方法有很多种下面就简单的介绍一下:

package custom;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class Person {
	public static void main(String[] args) {
		getData();
	}

	private static void getData() {
		List<String> mList = new ArrayList<>();
		mList.add("高富帅");
		mList.add("白富美");
		mList.add("史珍香");
		mList.add("黑木耳");
		mList.add("方向盘");
		mList.add("闪电球");
		/**
		 * for循环获取集合里面的数据
		 */

		for (int i = 0; i < mList.size(); i++) {
			System.out.println("获取到集合里面的数据----->" + mList.get(i));
		}

		/**
		 * 优化后的for循环 这种写法好处是:整个循环当中,预存了len的长度,这样不需要每次循环都调用底层迭代器
		 * (减少mList.size();调用的次数) 缺点就是:频繁操作集合里面(插入数据或者删除)数据就有误
		 */

		for (int i = 0, len = mList.size(); i < len; i++) {
			System.out.println("获取到集合里面的数据----->" + mList.get(i));
		}

		/**
		 * for循环加强版
		 */

		for (String string : mList) {
			System.out.println("获取到集合里面的数据----->" + string);
		}

		/**
		 * 使用迭代器Iterator正序遍历元素
		 */

		Iterator<String> it = mList.iterator();
		while (it.hasNext()) {
			String getData = it.next();
			System.out.println("获取到集合里面的数据----->" + getData);
		}

		/**
		 * map取值
		 */
		HashMap<Integer, String> map = new HashMap<Integer, String>();
		map.put(1, "高富帅");
		map.put(2, "白富美");
		map.put(3, "史珍香");
		map.put(4, "黑木耳");
		map.put(5, "方向盘");
		map.put(6, "闪电球");
		// 通过Map.entrySet使用iterator遍历key和value
		Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<Integer, String> entry = iterator.next();
			System.out.println("key= " + entry.getKey() + " and value= "+ entry.getValue());
					
		}
		// 通过Map.entrySet遍历key和value,推荐,尤其是容量大时
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			// Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry
			entry.getKey();
			entry.getValue();
			map.entrySet(); // 返回此映射中包含的映射关系的 Set视图。
			System.out.println("key= " + entry.getKey() + " and value= "+ entry.getValue());
					
		}
		// 通过Map.values()遍历所有的value,但不能遍历key
		for (String v : map.values()) {
			System.out.println("获取到集合里面的数据----->" + v);
		}
		// 通过获取所有的key按照key来遍历
		// Set<Integer> set = map.keySet(); //得到所有key的集合
		for (Integer in : map.keySet()) {
			String str = map.get(in);// 得到每个key多对用value的值
			System.out.println(str);
		}

	}
}

 

### 前端部分公网部署的方法 对于前后端分离项目中的前端部分,要将其部署公网上,通常涉及几个关键步骤。这些步骤不仅限于特定的技术栈,而是适用于大多数现代Web应用。 #### 选择合适的托管服务提供商 为了使前端应用程序能够被全球用户访问,可以选择云服务商提供的静态网站托管功能来部署前端代码。这类平台支持自动HTTPS加密传输,并提供CDN加速服务以提升加载速度[^1]。 #### 使用反向代理服务器配置域名解析 当决定好托管位置之后,下一步就是设置DNS记录指向所选的服务商IP地址或CNAME。如果采用的是VPS自建站点,则需安装如Nginx这样的HTTP服务器作为反向代理,用于处理来自互联网的请求并将它们转发给实际运行的应用实例。此外,在防火墙规则里开放必要的TCP端口号也是必不可少的操作之一[^4]。 #### 自动化构建与发布流程 借助CI/CD工具链可以简化持续集成和交付的过程。每当开发者提交新的更改时,GitHub Actions、GitLab CI等自动化流水线会触发一系列任务:拉取最新源码版本、执行测试套件验证质量、编译打包成生产环境可用的形式最后通过SCP协议或者其他方式同步文件到远程主机上指定路径下[^2]。 ```bash scp -r ./dist/* user@your.server.ip:/var/www/html/ ``` 上述命令展示了怎样利用`scp`指令快速复制本地构建产物(`./dist`)内的所有内容到达目标机器相应目录中去。 #### 容器化解决方案 考虑到跨不同操作系统之间的一致性和可移植性问题,Docker成为了一个理想的选择。创建一个简单的Dockerfile定义所需的基础镜像及其依赖关系,再配合docker-compose.yml描述多容器应用场景下的网络连接和服务交互逻辑,从而轻松实现在任何地方一键式搭建完整的开发调试环境或是投入线上运营的目的[^5]。 ```dockerfile FROM node:lts-alpine as build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:stable-alpine COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 此段脚本先是基于Node.js官方镜像完成Vue项目的构建工作,接着切换到Nginx映像负责分发已生成好的HTML/CSS/JS资源文件。 ### 实现安全可靠的外部接入机制 针对位于私有网络内部的服务想要对外界公开接口的情况,除了直接修改路由器配置允许WAN侧流量穿透进来之外,还可以考虑运用第三方中介——即所谓的“隧道”技术(比如Ngrok),它可以在不改变现有架构的前提下迅速建立起一条通往内网资产的安全通道;或者是建立专门的API Gateway节点充当入口哨兵角色,统一管理鉴权认证策略以及速率限制等功能特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值