Java容器Container学习记录(代码篇)

1.数组容器

1.特性:固定大小,有序。可以存储任意类型(简单类型,对象类型)。

2.数组的定义:

 语法:类型[ ] 变量名=null

 其中类型可以是Java的任意类型,包括:简单类型,对象类型

数组定义案例:

int[ ] a1=null; a1=new int[10];//定义一个长度为10的整数数组

long[ ] a2=null; a2=new long[20]; //定义一个数据类型为long长度为20数组

String[ ] a3=null;a3=new String[30]; //定义一个数据类型为String长度为30的数组

Person[ ] a4=null;a4=new Person[5]; //定义一个数据类型为Person长度为5的数组,需要引入有Person方法的包,否则Person无法解析为类型。

3.创建数组:

(1)只创建一个固定大小的数组,没有存储任何数据(方式一和上面举的几个例子就是如此)

方式一:一般推荐使用这种方式

格式:数组存储的数据类型[ ] 数组名称 = new 数组存储的数据类型[数据长度];

如:定义一个长度为10的整数数组 int[ ] arr=new int[10];

定义一个长度为10的字符串数组 String arr=new String[10];

(2)创建数组时就在数组中存储了数据

方式二:

格式:数组存储的数据类型[ ] 数组名称 = {元素1,元素2,元素3,......};

如:定义一个存储 张三 李四 王五 赵六字符串的数据容器

String[ ] arr={"张三","李四","王五","赵六"}

Person p1=new Person(“吴明”,20);//调用Person注意自己的类中是否调用了包含有Person方法的包,还有标点大小写

Person p2=new Person(“刘明”,20); //调用Person注意自己的类中是否调用了包含有Person方法的包, 还有标点大小写

方式三

格式:数组存储的数据类型[ ] 数组名称 = new 数组存储的数据类型[]{元素1,元素2,元素3,元素4,......}

如:定义一个存储10,20,30,40的整型数组

int[ ] arr=new int[ ]{10,20,30,40}

备注:数组为上篇笔记中所写的按大小是否可变容器中的不可变大小容器,长度一旦指定不可更改。

4.数组的遍历:(遍历就是将容器中的每个对象取出来,如挨个打印出来)

(1)使用普通的for循环

数组的每个元素都有下标位置,从0开始到i结束,如

for(int i=0;i<a1.length;i++)

(2)Java提供了所有容器的简便变量信息(for each循环)

for(类型 变量:容器){  }//类型要是数组的则类型一致

for(long m:a2) {

         System.out.println(m);

      }

5.

6.取得数组单元格的数据:

Int m=a1[2];

List容器

1.特性:可变,有序(元素是从0开始,有序的)

2.类型:Java.util.List

3.List接口的定义:

Public interface List<E> extends Collection<E>定义了所有List容器应该有的功能:功能列表。

4.实现类:

AbstractList,AbstractSequentialList,ArrayList,AttributeList,CopyOnWriteArrayList,LinkedList,RoleList,RoleUnresolvedList,Stack,Vector

编程中使用最多的是:

ArrayList:类似数组,容器元素用下标访问,查找指定元素快,但执行插入和删除操作时速度较慢。

LinkedList:类似链表结构的List,执行插入和删除操作速度快,但查询指定元素较慢。

5.创建List容器

(1)List 对象=new 实现类();

可以存储所有对象类型,实际编程很少使用,通常List容器都用来存储相同类型的数据。

 

从JDK5开始支持容器的泛型,通过泛型指定容器只能存储特定的类型。

List<String> list01=new ArrayList<String>();//只能存String类型的对象,如下的10就会报错

List<Person> list01=new LinkedList<Person>();//只能存Person类型的对象

 

6.List提供的主要方法:(参考JDK API文档):List接口的方法

Set容器

1.特性:无序,可变,只能存对象类型。

2.类型:java.util.Set

3.定义:public interface Set<E> extend Collection<E>

Set接口定义了所有Set容器必须支持的方法。

4.实现类型:

AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet

使用较多的:HashSet,LinkedHashSet,TreeSet(排序)

5.创建Set容器

(1)用于存储任何对象类型的Set容器

Set 变量=new 实现类();

(2)存储固定类型对象的Set容器(同List容器中的泛型)

Set<E> 变量=new 实现类<E>();

 

6.Set接口定义的方法:(参考 JDK API文档):Set接口的方法

Set容器运行示例:

 

Map容器

1.特性:其对象必须有标签(key),无序,可变,且key值不能重复

2.接口类型:Java.util.Map

3定义:public interface Map<K,V>

4.实现类:

AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap, UIDefaults, WeakHashMap

常用的类有:HashMap,LiskedhashMap,TreeMap

5.创建Map容器

(1)无泛型,不限定存储的key和value(编程时一般不适用)

Map map01=new HashMap();

 

(2)带泛型,限定存储的key和value

Map<String,Number> map01=new HashMap();//指定类型为StringNumber

6.Map接口定义的方法:(参考JDK API文档):Map接口的方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现滑动图片验证的代码可以分为前端和后端两部分。 前端部分: 1. 在页面中添加一个验证的容器和一个滑块,如下所示: ```html <div class="verification-container"> <div class="verification-img"></div> <div class="verification-slider"></div> </div> ``` 2. 在CSS文件中设置验证容器和滑块的样式,如下所示: ```css .verification-container { position: relative; width: 300px; height: 200px; margin: 0 auto; background-color: #f5f5f5; border: 1px solid #ccc; overflow: hidden; } .verification-img { position: absolute; left: 0; top: 0; width: 300px; height: 200px; background-image: url(verification-image.jpg); background-size: cover; } .verification-slider { position: absolute; left: 0; top: 80px; width: 60px; height: 40px; background-color: #fff; border: 1px solid #ccc; cursor: pointer; } ``` 3. 编写JavaScript代码,实现滑块的拖动和验证的功能,如下所示: ```javascript // 获取验证容器和滑块元素 var container = document.querySelector('.verification-container'); var slider = document.querySelector('.verification-slider'); // 设置滑块的拖动事件 slider.addEventListener('mousedown', function (event) { // 记录滑块的起始位置 var startX = event.clientX - slider.offsetLeft; // 设置鼠标移动事件 document.addEventListener('mousemove', moveHandler); // 设置鼠标松开事件 document.addEventListener('mouseup', upHandler); function moveHandler(event) { // 计算滑块的位置 var sliderX = event.clientX - startX; // 限制滑块的位置在验证容器内 if (sliderX < 0) { sliderX = 0; } if (sliderX > container.clientWidth - slider.offsetWidth) { sliderX = container.clientWidth - slider.offsetWidth; } // 设置滑块的位置 slider.style.left = sliderX + 'px'; } function upHandler(event) { // 移除鼠标事件 document.removeEventListener('mousemove', moveHandler); document.removeEventListener('mouseup', upHandler); // 验证滑块的位置是否正确 if (slider.offsetLeft > 240) { alert('验证通过!'); } else { alert('验证失败!'); } // 重置滑块的位置 slider.style.left = 0; } }); ``` 后端部分: 1. 在Java中实现一个Servlet,用于接收前端传递的验证结果,如下所示: ```java @WebServlet("/verification") public class VerificationServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取验证结果 String result = request.getParameter("result"); // 验证结果是否正确 if ("success".equals(result)) { response.getWriter().write("验证通过!"); } else { response.getWriter().write("验证失败!"); } } } ``` 2. 在JSP页面中添加一个隐藏的表单域和一个提交按钮,用于将验证结果传递给Servlet,如下所示: ```html <form id="verification-form" method="post" action="verification"> <input type="hidden" name="result" id="verification-result"> <button type="submit" id="verification-submit">提交</button> </form> ``` 3. 在JavaScript代码中,将验证结果设置到隐藏的表单域中,并提交表单,如下所示: ```javascript // 获取表单元素 var form = document.querySelector('#verification-form'); var result = document.querySelector('#verification-result'); var submit = document.querySelector('#verification-submit'); // 设置提交事件 submit.addEventListener('click', function (event) { // 获取验证结果 var verificationResult = slider.offsetLeft > 240 ? 'success' : 'fail'; // 设置验证结果到表单域中 result.value = verificationResult; // 提交表单 form.submit(); }); ``` 这样,前端和后端的代码就都实现了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值