技术标签: jvm Java学习 java intellij-idea 开发语言
目录
public class test_04 {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("a");
collection.add("b");
collection.add("c");
collection.add("v");
//1.获取迭代器的对象
//迭代器对象一旦被创建出来,默认指向集合的0索引位置
Iterator<String> it = collection.iterator();
//2.利用迭代器的方法进行遍历
System.out.println(it.hasNext());//当前位置是否有元素可以被取出
System.out.println(it.next());//取出当前位置的元素+将迭代器往后移动一个索引的位置
while(it.hasNext()){
System.out.println(it.next());
}
}
}
练习:创建一个集合,有元素 a b b c d 使用循环遍历这个集合,判断当前获取到的元素是 否为b,如果是就删除。(使用三种遍历方式)
import java.util.ArrayList;
import java.util.Iterator;
public class test_05 {
public static void main(String[] args) {
method1();//普通的删除方法,当集合中有两个元素挨着的时候就不可以进行删除所有的元素,只会删除其中的一个
method2();//使用迭代器的方法进行遍历
method3();//使用增强for的方式进行遍历
}
public static void method1() {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
//list中获取一个元素,用的是get
if("b".equals(s)){
list.remove(i);
i--;//当加上一个i--的回头操作就可以删除所有想要删除的元素。
}
}
System.out.println(list);
}
public static void method2() {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
Iterator<String> it = list.iterator();
while (it.hasNext()){
String s = it.next();
if("b".equals(s)){
it.remove();
}
}
System.out.println(list);
}
public static void method3() {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
for (String s : list) {
if("b".equals(s)){
list.remove(s);
}
}
System.out.println(list);
}
}
三种循环的使用场景
List集合的概述:
List集合的特点:
LinkedList集合特有的功能:
第一种方式:自然排序Comparable的使用
自然排序简单原理
用TreeSet的第一种排序方式实现下列需求:
下面展示的是在Student类中进行重写compareTo方法,具体的前面两步没有展示。
public int compareTo(Student o) {
//按对象的年龄进行排序年龄从小到大排列
//年龄是主要判断条件
int result = this.getAge()-o.getAge();
//当年龄的判断条件一样的时候,才会进行姓名的判断
result=result ==0?this.getName().compareTo(o.getName()):result;
//下面的compareTo和上面的是不一样的,下面的使用字符串在调用compareTo,
//代表的意思是按照字典顺序比较两个字符串,例如下面举个例子来进行说明
//String s1="aaa";
//String s2="ab";
//System.out.println(s1.compareTo(s2));-1
//为什么会是-1,首先比较的是第一个字母,如果第一个字母是一样的,那么就继续比较后面的字母
//当不一样的时候,就拿着对应的码表值97,减去b的码表值98;
//认为a是要比b小
return result;
}
第二种方式:比较器排序Comparator
用TreeSet的第二种排序方式实现下列需求:
import java.util.Comparator;
import java.util.TreeSet;
public class test_08 {
public static void main(String[] args) {
//实现TreeSet自然排序的第二种方法,用TreeSet比较器排序
TreeSet<Teacher> ts = new TreeSet<>(new Comparator<Teacher>() {
@Override
public int compare(Teacher o1, Teacher o2) {
//01表示要存入的那个元素
//02表示已经存入到集合中的元素
int result = o1.getAge()-o2.getAge();
result = result==0?o1.getName().compareTo(o2.getName()):result;
return 0;
}
});
Teacher t1 = new Teacher("zhangsan",12);
Teacher t2 = new Teacher("lisi",15);
Teacher t3 = new Teacher("wangwu",18);
ts.add(t1);
ts.add(t3);
ts.add(t2);
System.out.println(ts);
}
}
两种方式比较小结:
【案例】按照字符串长度进行排序
public class test_09 {
public static void main(String[] args) {
//java中的Integer,String这些类java已经提供给我们了,所以第一种就不能满足我们的需求;
//这时候就需要选择第二种Comparator方法;
TreeSet<String> t = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int result = o1.length()-o2.length();
result = result==0?o1.compareTo(o2):result;
return result;
}
});
t.add("a");
t.add("abc");
t.add("acb");
t.add("avfwea");
System.out.println(t);
}
}
哈希值:
采用上面的方法进行遍历的方式有三种:
第一种方式:先获取所有的键,然后再根据键去寻找对应的值
第二种方式:先获取所有的键值对对象,然后再获取每一个键和每一个值
第三种方式:采用的是map中的forEach()方式,两个参数对应的是map中的键和值。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class test_10 {
public static void main(String[] args) {
//创建集合并添加元素
//map的遍历方式一
Map<String,String> map = new HashMap<>();
map.put("1号灰太狼","1号红太狼");
map.put("2号灰太狼","2号红太狼");
map.put("3号灰太狼","3号红太狼");
map.put("4号灰太狼","4号红太狼");
map.put("5号灰太狼","5号红太狼");
map.put("6号灰太狼","6号红太狼");
map.put("7号灰太狼","7号红太狼");
// //第一种遍历方式
// //获取到所有的键,再通过键来找相应的值
Set<String> keys = map.keySet();
//遍历Set集合得到每一个键
for (String key : keys) {
map.get(key);
}
//遍历方式二
//首先要获取到所有的键值对对象,再获取每一个键和每一个值
//Set集合中装的时键值对象
//而Entry里面装的时键和值
Set<Map.Entry<String,String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"....."+value);
}
//遍历方式三
//利用map中的forEach()方法
map.forEach(
(String key,String value)->{
System.out.println(key+"......"+value);
}
);
}
}
文章浏览阅读2k次。基于asp.net的des加解密方法_.netcore 1.0 des加解密
文章浏览阅读2.3w次,点赞8次,收藏22次。Android应用的默认Activity对一个Android应用来说,一般都会将某个Activity配置为默认启动的Activity。默认Activity作为应用的入口,会在桌面中显示一个图标和名字。这里稍作说明一下,Android原生系统采用二级桌面设置,应用安装后会显示在应用抽屉中,不会直接显示在外层桌面上,除非应用又在外层桌面创建了快捷方式。而大部分国内ROM都是采用一级桌面,取消了应用..._andrior 默认activiy
文章浏览阅读709次。7-20 打印九九口诀表 (15 分)下面是一个完整的下三角九九口诀表:11=112=2 22=413=3 23=6 33=914=4 24=8 34=12 44=1615=5 25=10 35=15 45=20 55=2516=6 26=12 36=18 46=24 56=30 66=3617=7 27=14 37=21 47=2..._一道题: 4 9 20 34 ()99 a.59 b.69 c.79 d.89
文章浏览阅读2.2w次。Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。网关都是给接口做代理转发的,后端对应的都是REST API,返回数据格式都是JSON。如果不做处理,当发生异常时,Gateway默认给出的错误信息是页面,不方便前端进行异常处理。需要对异常信息进行处理,返回JSO..._spring gateway 全局异常
文章浏览阅读502次,点赞9次,收藏15次。电子商务是基于当下网络社会体系而生成的一种商品交易活动,其突破了传统的面对面式的金钱交易,实现了不出门便可以支付、购物的功能,非常符合当今生活、工作节奏加快的社会。现在的电子商务平台已经涉及行业广泛,只要是交易便可以通过网络搭建相关交易平台来实现线上交易模式,极为方便,所以,在此,根据校园二手闲置交易方面的需求,决定将校园二手闲置交易转移到网络上,给校园用户一个优质的、安全的二手交易平台,实现网络发布售卖、购买二手商品的功能,以促进校园信息化发展。_二手物品交易平台毕业设计
文章浏览阅读1.3k次。什么是SOHO生活SOHO,是英文small office home office的头一个字母的拼写,就是在家里办公、小型办公的意思。 对既定生活模式的背叛,也是对未来生活的一种变通,使得越来越多的高级管理人员、白领和IT人士正在加入SOHO一族。近年来,在北京、上海、广州等大城市,“soho”成为追求自由创业者的想往。例如,最新公布的社会调查显示,广州目前符合SOHO定义的年青人约有20万。 不_soho一族的生活方式
文章浏览阅读957次。网际控制报文协议ICMP_lwip_broadcast_ping g工
文章浏览阅读645次。dos通过替换部分字符串批量修改文件名_dos命令替换文件名中几个字符
文章浏览阅读1k次。点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【语义分割】技术交流群后台回复【分割综述】获取语义分割、实例分割、全景分割、弱监督分割等超全学习资料!论文思路:多模态融合可以使语义分割更加鲁棒。然而,融合任意(arbitrary)数量的模态仍然有待探索。为了深入研究这个问题,本文创建了DELIVER 任意模态(arbitrary-modal)分割基准,包括深..._delivering arbitrary-modal semantic segmentation
文章浏览阅读2.5k次,点赞3次,收藏5次。目录前言创建环境变量前言我们在使用postman测试接口时,一个项目往往有多个环境(测试、正式等),请求不同环境的接口一般只是ip和端口不一样,如果只是环境不同就新建一个请求,那么会比较麻烦。这时候我们可以定义多个环境变量,在接口地址中进行引用。创建环境变量1、点击postman右上角的编辑按钮(下图中右上角红色框),选择add,填写环境名称,变量名称,对应的变量值即可。有多个环境,就新建多个环境即可2、添加完成之后,我们就可以在Environment选择框,选择我们的环境,下面我选择刚才新增的_postman host配置
文章浏览阅读133次。 <title>js向左滑动的轮播图</title> <style> #div1 { width: 200px; height: 200px; border: 1px solid #000; } </style><..._console.log(getcomputedstyle
文章浏览阅读234次。导入jar包后运行报出ClassNotFoundException异常:导入jar包时吧Android Private Libraries remove掉了,导致异常出现Android Private Libraries:表示放在libs里面的jar包引用,视为私有引用。存放的是android私有的库(libs目录下的)。添加jar包到libs里面,系统自动把jar加载到andr_错误日记在哪儿手机板