Java学习第十六天
1:List的子类(掌握)
(1)List的子类特点
ArrayList:
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector:
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
(2)ArrayList
A:没有特有功能需要学习
B:案例
a:ArrayList存储字符串并遍历
b:ArrayList存储自定义对象并遍历
(3)Vector
A:有特有功能
a:添加
public void addElement(E obj) -- add()
b:获取
public E elementAt(int index) -- get()
public Enumeration<E> elements() -- iterator()
B:案例
a:Vector存储字符串并遍历
b:Vector存储自定义对象并遍历
(4)LinkedList
A:有特有功能
a:添加
addFirst()
addLast()
b:删除
removeFirst()
removeLast()
c:获取
getFirst()
getLast()
B:案例
a:LinkedList存储字符串并遍历
b:LinkedList存储自定义对象并遍历
(5)案例:
A:去除集合中的多个字符串的重复元素
如果字符串的内容相同,即为重复元素
B:去除集合中的多个自定义对象的重复元素
如果自定义对象的成员变量值都相同,即为重复元素
C:用LinkedList模拟一个栈数据结构的集合类,并测试。
你要定义一个集合类,只不过内部可以使用LinkedList来实现。 2:泛型(掌握)
(1)泛型概述
是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
(2)格式:
<数据类型>
注意:该数据类型只能是引用类型。
(3)好处:
A:把运行时期的问题提前到了编译期间
B:避免了强制类型转换
C:优化了程序设计,解决了黄色警告线问题,让程序更安全
(4)泛型的前世今生
A:泛型的由来
Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
B:泛型类
C:泛型方法
D:泛型接口
E:泛型高级通配符
?
? extends E
? super E
(5)我们在哪里使用呢?
一般是在集合中使用。 3:增强for循环(掌握)
(1)是for循环的一种
(2)格式:
for(元素的数据类型 变量名 : 数组或者Collection集合的对象) {
使用该变量即可,该变量其实就是数组或者集合中的元素。
}
(3)好处:
简化了数组和集合的遍历
(4)弊端
增强for循环的目标不能为null。建议在使用前,先判断是否为null。 4:静态导入(了解)
(1)可以导入到方法级别的导入
(2)格式:
import static 包名....类名.方法名;
(3)注意事项:
A:方法必须是静态的
B:如果多个类下有同名的方法,就不好区分了,还得加上前缀。
所以一般我们并不使用静态导入,但是一定要能够看懂。 5:可变参数(掌握)
(1)如果我们在写方法的时候,参数个数不明确,就应该定义可变参数。
(2)格式:
修饰符 返回值类型 方法名(数据类型... 变量) {} 注意:
A:该变量其实是一个数组名
B:如果一个方法有多个参数,并且有可变参数,可变参数必须在最后
(3)Arrays工具类的一个方法
asList()把数组转成集合。
注意:这个集合的长度不能改变。 6:练习(掌握)
A:集合的嵌套遍历
import java.util.ArrayList; public class ArrayListDemo1 {
public static void main(String[] args) {
//创建大集合
ArrayList<ArrayList<Student>> stu = new ArrayList<ArrayList<Student>>();
//创建第一个班级的学生集合
ArrayList<Student> first = new ArrayList<Student>();
ArrayList<Student> second = new ArrayList<Student>();
ArrayList<Student> third = new ArrayList<Student>();
//创建学生
Student s1 = new Student("a1",12);
Student s2 = new Student("a2",13);
Student s3 = new Student("a3",14);
Student s4 = new Student("a4",15);
Student s5 = new Student("a5",16);
Student s6 = new Student("b1",17);
Student s7 = new Student("b2",18);
Student s8 = new Student("b3",19);
Student s9 = new Student("b4",20);
Student s10 = new Student("c1",21);
Student s11 = new Student("c2",22);
Student s12 = new Student("c3",23);
//学生进班
first.add(s1);
first.add(s2);
first.add(s3);
first.add(s4);
first.add(s5); second.add(s6);
second.add(s7);
second.add(s8);
second.add(s9); third.add(s10);
third.add(s11);
third.add(s12); //把班级学生存储到学籍系统中
stu.add(first);
stu.add(second);
stu.add(third); //遍历
for(ArrayList<Student> s:stu){
for(Student x:s){
System.out.println(x.getName()+"---"+x.getAge());
}
} }
}
B:产生10个1-20之间的随机数,要求随机数不能重复
import java.util.ArrayList;
import java.util.Random; /*
* 获取10个1-20之间的随机数要求不能重复
* 分析:
* 创建产生随机数的对象
* 创建一个存储随机数的集合
* 定义一个统计变量
* 判断统计变量是否小于10
* 是:判断随机数是否存在
* 存在:不搭理
* 不存在:统计变量++
* 否:退出循环
*/
public class RandomDemo {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> array = new ArrayList<Integer>();
int count = 0;
while(count<10){
int number = r.nextInt(20) + 1;
if(!array.contains(number)){
count++;
array.add(number);
}
} for(Integer y:array){
System.out.println(y);
}
}
}
C:键盘录入多个数据,以0结束,并在控制台输出最大值
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
/*
* 键盘录入多个数据,以0结束,在控制台输出最大值
* 分析:
* 创建键盘录入对象
* 键盘录入多个数据,不知道多少个,所以用集合存储
* 以0结束,判断录入的数据为0时就不再录入数据了
* 把集合转为数组
* 对数组排序
* 获取最大索引的值即为最大值
*/
public class ArgsDemo {
public static void main(String[] args) {
ArrayList<Integer> arr = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in); while(true){
System.out.println("请输入数据:");
int number = sc.nextInt();
if(number != 0){
arr.add(number);
}else{
break;
}
} Integer[] i = new Integer[arr.size()];
arr.toArray(i);
Arrays.sort(i);
System.out.println("数组是:"+arrayToString(i)+"最大值是:"+i[i.length-1]); } public static String arrayToString(Integer[] i){
StringBuilder sb = new StringBuilder(); sb.append("["); for(int x=0;x<i.length;x++){
if(x == i.length-1){
sb.append(i[x]);
}else{
sb.append(i[x]).append(",");
}
}
sb.append("]"); return sb.toString(); } } 7:要掌握的代码
集合存储元素,加入泛型,并可以使用增强for遍历。
Java学习第十六天的更多相关文章
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十六周
java学习第十六周-并发 本周,学习了Java中线程,并发的知识,在老师的带领下,进行了对知识的理解学习,以及对实验的运行讲解,对这一块内容掌握的还可以,在自主编程中,也能够完成.线, ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周
java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十四周
java学习第十四周 本周,主要精力放在了第十二章swing用户界面组件知识的学习,swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十周
---恢复内容开始--- Java学习第十周 本周,学习泛型程序设计,泛型也被称为参数化类型(parameterized type),就是在定义类.接口和方法时,通过类型参数指示将要处理的 ...
- JAVA学习前十天:小结、面向对象之”扑克牌“例子
2016年4月26号正式步入JAVA学习课堂,学习了第一节JAVA课程,由于以前有C语言基础,所以课程有点快! 第一天:学习了教材的第一部分,第一部分总共两章,分别是JAVA简介和JAVA基础语法. ...
- 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口
从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...
- 从.Net到Java学习第十篇——Spring Boot文件上传和下载
从.Net到Java学习系列目录 图片上传 Spring Boot中的文件上传就是Spring MVC中的文件上传,将其集成进来了. 在模板目录创建一个新的页面 profile/uploadPage. ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十二周
java学习第十章:图形程序设计 本章,介绍的是如何编写使用图形用户界面GUI的java程序.主要讲的是如何编写定义屏幕上的窗口大小和位置的程序,如何在窗口中采用多种字体显示文本,如何显示 ...
随机推荐
- selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出
部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...
- Python3中集合的混合使用
比较简单没什么好说的: list_1 = [1,2,3,4,6,3,2,5,7,8,2,1] list_1 = set(list_1) list_1.add(999) list_2 = set([2, ...
- How to extract pcd from a rosbag? 如何从rosbag中提取pcd
4.1 bag_to_pcd Reads a bag file, saving all ROS point cloud messages on a specified topic as PCD fil ...
- ASP 注释
ASP.NET中使用HTML标准注释<!-- -->回导致程序崩溃,必须使用ASP标准注释<%-- --%>
- [51nod1238] 最小公倍数之和 V3(杜教筛)
题面 传送门 题解 懒了--这里写得挺好的-- //minamoto #include<bits/stdc++.h> #define R register #define ll long ...
- ajax遍历数据生成下拉框
<script type="text/javascript"> function GetEQIDList(ModuleID) { $. ...
- kindedtor的基本使用
首先需要进入官网下载kineditor相关文件: 然后写代码: <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- springcloud系列九 整合Hystrix Dashboard
Hystrix Dashboard是Hystrix的仪表盘组件,主要用来实时监控Hystrix的各项指标信息,通过界面反馈的信息可以快速发现系统中存在的问题. 整合快速体验: pom.xml(这个是F ...
- json几种读取方式,ArrayList循环读取【转】
在之前写过提取json数据格式的文章,这次对jmeter读取json数据格式进行整理. 举例一个接口的response 格式如下: { "data" : { "devic ...
- bootstrap-table 选择行,并且获得选中行的所有数据内容
html代码如下: <table id="table" data-toggle="table" th:attr="data-url=@{/vie ...