JAVA 基础知识总结

进制转换

十进制转十六进制:Integer.toHexString(int i)
十进制转八进制:Integer.toOctalString(int i)
十进制转二进制:Integer.toBinaryString(int i)
十六进制转十进制:Integer.valueOf("FFFF",16).toString()
八进制转十进制:Integer.valueOf("876",8).toString()
二进制转十进制:Integer.valueOf("0101",2).toString()

String

比较

compareTo方法最为重要,如 A.compareTo(B)返回结果有三种:

  • >0: 字符串A>B;
  • <0:字符串A<B;
  • =0:字符串A=B;

分割

String str = "hello world";
String[] data = str.split(" ");
for (int i = 0; i < data.length; ++i) {System.out.println(data[i]);
}

判空

if(str.equals(""));

查找

contains()方法

获取某一字符

str.charAt(idx)

裁剪

str.substring(idx)

容器

序列式容器

数组

ArrayList
  • 底层是Object数组
  • 常用方法:get()、remove(idnex/obj)、size()、indexOf(obj)、contains()相当于find、clear、isEmpty()
int[] intArray = new int[]{1, 2, 3};
Integer[] integerArray = new Integer[]{1, 2, 3};List<int[] > intArrayList = Arrays.asList(intArray);
List<Integer> integerList = Arrays.asList(integerArray);
List<Integer> integerList2 = Arrays.asList(1, 2, 3);
LinkedList
  • 底层是双向链表
  • 常用方法:get()、remove(idnex/obj)、size()、indexOf(obj)、contains()相当于find、clear、isEmpty()
  • addFirst(E e)、addLast(E e)、removeFirst()、removeLast()
//List 的ArrayList 实现
List<String> list1 = new ArrayList<>();// List 的LinkedList 实现
List<String> list2 = new LinkedList<>();// Stack对象创建
Stack<Integer> stk = new Stack<>();

NOTE尖括号里不能用基础数据类型,需要包装。

基础数据类型包装类
byteByte
shortShort
booleanBoolean
charCharacter
intInteger
longLong
floatFloat
doubleDouble

栈Stack

  • 常用方法:push(obj)、pop()、peek()、isEmpty()、empty()

队列Queue

  • 常见方法:offer(elem)/add(elen)、peek()/element、remove()

双端队列Deque

Deque<String> deque = new LinkedList<>();
  • 常用方法:
    • addFirst()/getFirst()、addLast()/geLast()
    • removeFirst()、removeLast()、remove(idx)/remove(object)
    • set(idx,elem)
    • size()、isEmpty()、toArray()

优先队列PriorityQueue

PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {public int compare(Integer o1, Integer o2) {return o2-o1; //从大到小排序}
});
  • 常用方法:offer(elem)、peek()、poll()、remove(elem)

关联式容器

set

  • 常见方法:add()、addAll()、size()、remove()、iterator()、contains(obj)、clear()

HashSet

HashSet<String> sites = new HashSet<String>();
  • 常见方法:add()、remove(obj)、size()、isEmpty()、contains(obj)、clear

TreeSet

有序map

map

  • 常用方法:put(k,v)、get(key)、remove()、size()、containsKey()

HashMap

  • 常用方法:put(k,v)、get(key)、remove()、size()、containsKey()

TreeMap

有序map

  • 常用方法:put(k,v)、get(key)、remove()、size()、containsKey()

自定义排序

对List进行排序

//数组
Integer[] integers = {2,7,5,3,1};
String[] strings = {"watermelon","apple","orange"};
//对数组排序
Arrays.sort(integers);
Arrays.sort(strings);//List
List<Integer> integerList = Arrays.asList(integers);
List<String> stringList = Arrays.asList(strings);
//对List进行排序
Collections.sort(integerList);
Collections.sort(stringList);Collections.sort(list, new Comparator<User>() {@Overridepublic int compare(User o1, User o2) {int age1 = o1.getAge();int age2 = o2.getAge();if (age1 == age2) {return 0;}else {// 从小到大return age1 > age2 ? 1 : -1 ;// 如果需要从大到小,可以将return的值反过来即可}}
});

对Object进行排序

1. 通过实现Comparator接口排序(重写compare方法,作为sort的第二参数)
class Student {public Student(String name, int score, int age) {this.name = name;this.score = score;this.age = age;}
}class sortAge implements Comparator<Student> {@Overridepublic int compare(Student stu1, Student stu2) {return stu1.getAge() - stu2.getAge();}
}public class customSorting {public static void main(String[] args) {// 1. 通过实现Comparator接口排序(重写compare方法)List<Student> list = new ArrayList<Student>();list.add(new Student("As", 23, 55));list.add(new Student("A2", 135, 23));list.add(new Student("cv", 99, 27));list.add(new Student("edrf", 123, 43));Collections.sort(list,new sortAge());for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);System.out.println(temp.getName()+","+temp.getScore()+","+temp.getAge()+",");}}
}

输出:

A2,135,23,
cv,99,27,
edrf,123,43,
As,23,55,
2.通过实现Comparable接口排序(重写compareTo方法,不需要传参)
class Student implements Comparable<Student> {public Student(String name, int score, int age) {this.name = name;this.score = score;this.age = age;}@Overridepublic int compareTo(Student stu) {return this.getScore() - stu.getScore();}
}public class customSorting {public static void main(String[] args) {... ...// 2. 通过实现Comparable接口排序(重写compareTo方法)Collections.sort(list);for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);System.out.println(temp.getName()+","+temp.getScore()+","+temp.getAge()+",");}}
}

输出:

As,23,55,
cv,99,27,
edrf,123,43,
A2,135,23,

Stream流体系

  • 目的:用于简化集合和数组操作的APl。

Stream流式思想的核心:

  1. 先得到集合或者数组的Stream流(就是一根传送带)
  2. 把元素放上去
  3. 然后就用这个Stream流简化的API来方便的操作元素。

集合获取Stream流的方式

使用Collections接口中的默认方法Stream()

//Collection集合获取流
Collection<String> list = new ArrayList<>();
Stream<String> s = list.stream();//Map集合获取流
Map<String,Integer> maps = new HashMap<>();
//键流
Stream<String> keyStream = maps.keySet().stream();
//值流
Stream<Integer> valueStream = maps.values().stream();
//键值对流
Stream<Map.Entry<String,Integer>> keyAndValueStream = maps.entrySet().stream();

数据获取Stream流的方式

Stream()或of()方法

//数组获取流
String[] names = {"赵敏","小昭","灭绝","周芷若"};
Stream<String> nameStream = Arrays.stream(names);
Stream<String> nameStream2 = Stream.of(names);
  • filter():用于对流中的数据进行过滤
  • limit():获取前几个元素
  • skip():跳过前几个元素
  • distint():去除流中重复的元素
  • concat():合并a和b两个流为一个流
//stream<T> filter(Predicatex?super T> predicate)  过滤
list.stream().filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));long size = list.stream().filter(s -> s.length() == 3).count();
System.out.println(size);//Stream<T> limit(long maxSize)  获取前几个元素
list.stream().filter(s -> s.startsWith("张")).limit(2).forEach(System.out::println);//Stream<T> skip(long n)  跳过前几个元素
list.stream().filter(s -> s.startsWith("张")).skip(2).forEach(System.out::println);//map加工方法:第一个参数原材料 -> 第二个参数是加工后的结果。
//给集合元素的前面都加上一个:黑马的:
list.stream().map(s -> "黑马的:" + s).forEach(s -> System.out.println(s));//需求:把所有的名称 都加工成一个学生对象。
list.stream().map(s -> new Student(s)).forEach(student -> System.out.println(student));//合并流
Stream<String> s1 = list.stream().filter(s -> s.startsWith("张"));
Stream<String> s2 = Stream.of("hello","你好");
Stream<String> s3 = Stream.concat(s1,s2);
s3.forEach(s -> System.out.println(s));

注意:

  • 中间方法也称为非终结方法,调用完成后返回新的Stream流可以继续使用,支持链式编程。
  • 在Stream流中无法直接修改集合、数组中的数据。

常见终结操作方法

  • forEach():对此流中的每个元素执行遍历操作
  • count():返回此流中的元素数

Stream流的收集操作

**收集Stream流的含义:**就是把Stream流操作后的结果数据转回到集合或者数组中去。

Stream流:方便操作集合/ 数组的手段。

集合/数组:才是开发中的目的。

具体方法:

  • collect():开放收集Stream流,指定收集器

  • toList():收集到List集合中

  • toSet():收集到Set集合中

  • toMap():收集到Map集合中

Stream<String> s1 = list.stream().filter(s -> s.startsWith("张"));
List<String> zhangList = s1.collect(Collectors.toList());
System.out.println(zhangList);//注意:"流只能使用一次"
Stream<String> s2 = list.stream().filter(s -> s.startsWith("张"));
Set<String> zhangSet = s2.collect(Collectors.toSet());
System.out.println(zhangSet);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用Docker部署DashDot访问本地服务器面板

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等&#xff0c;并且拥有API接…

【C++】双指针算法:复写零

1.题目 别看这是一道简单题&#xff0c;它的通过率低于一些中等甚至困难的题目&#xff01; 大大增加这道题目难度的是最后一句话&#xff1a;1.不可越界写入。2.就地修改。 如果可以再创建一个数组的话&#xff0c;那么这道题目就会非常简单&#xff0c;但这道题目必须要求在…

Linux的学习之路:18、进程间通信(2)

摘要 本章主要是说一下命名管道和共享内存 目录 摘要 一、命名管道 1、创建一个命名管道 2、匿名管道与命名管道的区别 3、命名管道的打开规则 4、代码实现 二、system V共享内存 1、共享内存 2、共享内存函数 三、代码 四、思维导图 一、命名管道 1、创建一个命…

13.Nacos简介,下载,安装,启动-windows

Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud的一个组件。 相比Eureka功能更加丰富&#xff0c;服务注册与发现和分布式配置。 Nacos下载地址&#xff1a; https://github.com/alibaba/nacos windows下载nacos-server-1.4.1.zip文件 nacos是基于java语言实现的&…

【系统架构师】-案例考点(三)

1、信息系统架构ISA设计 四种架构模型&#xff1a; 1&#xff09;单机应用 2&#xff09;客户机/服务器模式&#xff1a;两层、三层C/S、B/S模型、MVC模式等 3&#xff09;面向服务架构SOA 4&#xff09;企业数据交换总线&#xff1a;不同企业应用之间通过信息交换的公共频…

2024-04-21 问AI: 介绍一下花卉数据集Oxford 102 flowers

文心一言 Oxford 102 flowers数据集是一个由牛津大学工程科学系于2008年发布的花卉图像分类数据集。该数据集主要用于图像分类任务&#xff0c;并涵盖了英国常见的102种花卉&#xff0c;每种花卉由40到258张图像组成。这些图像涵盖了较大的比例、姿势和光线变化&#xff0c;使…

opengauss pending启动转主备代码分析

opengauss以pending启动时&#xff0c;也会执行StartupXLOG&#xff0c;并且replay wal&#xff0c;ApplyRedoRecord()会被调用。 当对pending状态的gaussdb&#xff0c;执行gs_ctl notify -M primary 时&#xff0c;会启动walsender等线程。 gs_ctl与gaussdb之间的交互不是通…

一招下载transformers真不用网上那些教程(我试了1*mol多次才知道)

pip很多是2 然而&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;…

element中file-upload组件的提示‘按delete键可删除’,怎么去掉

问题描述 element中file-upload组件会出现这种提示‘按delete键可删除’ 解决方案&#xff1a; 这是因为使用file-upload组件时自带的提示会盖住上传的文件名&#xff0c;修改一下自带的样式即可 ::v-deep .el-upload-list__item.is-success.focusing .el-icon-close-tip {d…

洛谷 -P1007 独木桥(模拟,思维)

独木桥 题目背景 战争已经进入到紧要时间。你是运输小队长&#xff0c;正在率领运输部队向前线运送物资。运输任务像做题一样的无聊。你希望找些刺激&#xff0c;于是命令你的士兵们到前方的一座独木桥上欣赏风景&#xff0c;而你留在桥下欣赏士兵们。士兵们十分愤怒&#xf…

angular17 打包项目放在了多出了个browser目录

修改package.json配置文件&#xff0c;把 "builder": "angular-devkit/build-angular:application", 改成"builder": "angular-devkit/build-angular:browser", 把"browser": "src/main.ts",改成"main&qu…

排队分红,你想象不到的电商新玩法

亲爱的朋友们&#xff0c;我是微三云的周丽&#xff0c;一名专注于私域电商模式创新的探索者。 随着互联网的迅猛发展&#xff0c;电商行业的商业模式也在不断演变。最近&#xff0c;一种全新的消费返利模式——排队分红模式&#xff0c;成为了业界瞩目的焦点。这一模式结合了…

组合模式【结构型模式C++】

1.概述 组合模式又叫部分整体模式属于结构型模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。 2.结构 组件&#xff08;Component&#xff09;:定义了组合中所有对象的通用接口&#xff0c…

three.js(3):添加three. js坐标轴、光源和阴影效果

1 实现步骤 要实现阴影效果同样需要几个重要的概念。 我们首先研究一下日常生活中是如何产生阴影效果的。 需要有光。需要一个物体&#xff0c;比如苹果、狗等。需要一个接受投影的元素&#xff0c;比如地面、桌面等。 在 Three.js 中要产生阴影效果其实和现实世界的原理差…

python:使用scipy及numpy对三维空间点进行插值并可视化

用scipy及numpy对三维空间点进行插值并可视化 示例 1示例 2示例 3 示例 1 要在Python中对三维坐标空间点进行插值&#xff0c;可以使用SciPy库中的插值函数。首先&#xff0c;需要安装SciPy库。可以使用以下命令来安装&#xff1a; pip install scipy接下来&#xff0c;可以使…

mysql 5.7分组报错问题 Expression #1 of ORDER BY clause is not in GROUP BY clause

解决方案&#xff1a; select version(), sql_mode;SET sql_mode(SELECT REPLACE(sql_mode,ONLY_FULL_GROUP_BY,)); 完美的解决方案是&#xff1a; 1 show variables like "sql_mode"; 2 3 set sql_mode; 4 set sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL…

在Debian上可以部署哪些有用的服务?

2024年4月20日&#xff0c;周六下午 在 Debian 上可以部署许多有用的服务&#xff0c;以满足各种需求。 以下是一些常见的有用服务&#xff1a; Web 服务器&#xff1a;如 Apache、Nginx、Lighttpd 等&#xff0c;用于托管网站和 Web 应用。数据库服务器&#xff1a;如 MySQL…

java面向对象.day26(抽象类)

说明&#xff1a; Java抽象类是一种特殊的类&#xff0c;它不能被直接实例化&#xff0c;只能作为其他类的基类&#xff08;即超类或父类&#xff09;。抽象类的主要作用是定义一组公共的行为和属性&#xff0c;这些行为和属性可以由其子类共享和继承。 1. 定义抽象类 抽象类…

分布式与一致性协议之拜占庭将军问题(一)

拜占庭将军问题 概述 拜占庭将军问题其实是借拜占庭将军故事展现了分布式共识问题&#xff0c;探讨和论证了解决的办法。实际上&#xff0c;拜占庭将军问题是分布式领域最复杂的一个容错模型&#xff0c;一旦搞懂了它&#xff0c;久能掌握分布式共识问题的解决思路&#xff0…

Oracle21C 引入HR实例(linux)

1、下载资源 https://github.com/oracle-samples/db-sample-schemas点击code&#xff08;代码&#xff09;下载 2、上传Sql文件 解压之后将human_resources里的文件复制到demo\schema\目录&#xff08;具体目录前面的路径是你安装的路径&#xff09;下&#xff0c;如下图 3、…