目录
引言
该文主要是博主备战CSP(Java)来查库函数所用,因为博主以前没学过Java,故写文以记,短时间会持续更新!
导包
import java.util.*;//导入所有包
输入
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);//创建对象
int n=scanner.nextInt(),m=scanner.nextInt();//输入整数
String str=scanner.next();//输入不带空格的字符串
scanner.nextLine();//吃回车
String str1=scanner.nextLine();//输入带有空格的字符串
String str2=scanner.nextLine();
System.out.println(n);
System.out.println(m);
System.out.println(str);
System.out.println(str1);
System.out.println(str2);
}
输出
public static void main(String[] args) {
System.out.println("换行");
System.out.print("不换行");
System.out.println("");
//输出指定的小数
System.out.println(String.format("%.4f", 2.878));
//输出指定的小数
System.out.println(String.format("%.3f", 2.878));
//输出指定的小数
System.out.println(String.format("%.2f", 2.878));
//输出指定的小数
System.out.println(String.format("%.1f", 2.878));
//输出指定的小数
System.out.println(String.format("%.0f", 2.878));
}
字符串
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);//创建对象
String str=new String("aBCdefg");
System.out.println("字符串比较");
System.out.println(str.equals("abc"));//判断str是否包含"abc"
System.out.println(str.equalsIgnoreCase("aBc"));//无视大小写
System.out.println(str.compareTo("aBC"));//字典序 比较小于返回负数 等于返回0 大于返回正数
System.out.println("字符串查找");
System.out.println(str.contains("def")); // 返回boolean
System.out.println(str.indexOf("def")); // 3,d开始的索引
System.out.println(str.indexOf("bit")); // -1,没有查到
System.out.println(str.startsWith("aBC")); // true
System.out.println(str.startsWith("abc")); // false
System.out.println(str.endsWith("g")); // true
System.out.println("字符串遍历");
for(int i=0;i<str.length();i++) {
System.out.print(str.charAt(i));
System.out.print(" ");
}
System.out.println();
System.out.println("字符串替换");
str="helloworld";
System.out.println(str.replaceAll("l", "_")); //he__owor_d
System.out.println(str.replaceFirst("l", "_")); //he_loworl
System.out.println("字符串拆分");
str = "hello world hello People" ;
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) {
System.out.println(s);
}
System.out.println("字符串截取");//两个参数 一个开始索引 一个结束索引
str = "helloworld" ;
System.out.println(str.substring(5)); // world
System.out.println(str.substring(0, 5));//hello
System.out.println("去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)");
str = " hello world " ;
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");
System.out.println("大小写转换");
str = " hEllo%$$%@#$%world 哈哈哈 " ;
System.out.println(str.toUpperCase()); // HELLO%$$%@#$%WORLD 哈哈哈
System.out.println(str.toLowerCase()); // hello%$$%@#$%world 哈哈哈
System.out.println("翻转字符串和获取字符串长度");
System.out.println(str.length());
StringBuffer sb = new StringBuffer("helloworld"); //String类不提供reverse()方法
System.out.println(sb.reverse()); //dlrowolleh
System.out.println(sb); //会改变原来的值
}
类型转换
public static void main(String[] args) {
int n0 = 100;
System.out.println("基本数据类型转String");//基本类型的值 + " "
String str = n0 + " ";
System.out.println(str);
System.out.println("String转基本数据类型");//XX.parseXX("基本类型的值")
int n1 = Integer.parseInt("123");
System.out.println(n1);
double n2 = Double.parseDouble("123.1");
System.out.println(n2);
float n3 = Float.parseFloat("123.45");
System.out.println(n3);
short n4 = Short.parseShort("12");
System.out.println(n4);
long n5 = Long.parseLong("12345");
System.out.println(n5);
boolean n6 = Boolean.parseBoolean("true");
System.out.println(n6);
Byte n7 = Byte.parseByte("12");
System.out.println(n7);
}
排序(包含简单数据类型和复杂数据类型)
public static class Node implements Comparable<Node>{
public int x;
public int w;
public int left;
public int right;
@Override
public int compareTo(Node other) {
return this.x-other.x;
}
}
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
Node[] nodes=new Node[m+1];
for(int i=1;i<=m;i++)
{
nodes[i]=new Node();//
nodes[i].x=scanner.nextInt();
nodes[i].w=scanner.nextInt();
}
System.out.println("对复杂数据类型排序");
Arrays.sort(nodes,1,m+1);
// 打印排序后的数组
for(int i=1;i<nodes.length;i++) {
System.out.print(nodes[i].x);
System.out.print(" ");
}
System.out.println("对基本数据类型升序排序");
int[] array = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(array,0,4);//默认升序
for(int i=0;i<array.length;i++) {
System.out.print(array[i]);
System.out.print(" ");
}
System.out.println("对数据降序排序");
Integer[] array1 = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(array1,0,4,Collections.reverseOrder());//用Integer定义 float要变成Float
for(int i=0;i<array1.length;i++) {
System.out.print(array1[i]);
System.out.print(" ");
}
System.out.println("对字符串升序排序");
//Java没有内置字符串内部排序方法。但可以将其转换为char数组,使用Arrays.Sort对其进行排序,再将其转换回字符串
String test= "cedba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);
System.out.println(sorted);
}
Map
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();//基于哈希桶 key是无须的
// Map<String,Integer> map = new TreeMap<>();基于红黑树 key是有序的 key必须能比较否则抛出异常
map.put("abc",10);
map.put("hello",20);
System.out.println(map);//Map类重写了toString方法
map.put("abc",20);//修改"abc"对应的value值
System.out.println(map);
System.out.println("根据key 获取value");
System.out.println(map.get("abc"));//20
System.out.println(map.get("key"));//找不到返回null
System.out.println(map.getOrDefault("key",10086));//找不到返回默认值10086
System.out.println("删除映射关系");
map.remove("abc");
System.out.println(map);
System.out.println("获取key集合");
map.put("abc",10);
map.put("hello",20);
map.put("hhf",23);
map.put("world",20);
Set<String> set = map.keySet();
System.out.println(set);
System.out.println("获取value集合");
Collection<Integer> list = map.values();
System.out.println(list);
System.out.println("判断map是否存在某个key或某个value");
System.out.println(map.containsKey("abc"));
System.out.println(map.containsValue(10086));
System.out.println("打包映射关系并遍历map");
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
System.out.println(entrySet);
for(Map.Entry<String,Integer> entry : entrySet){
System.out.println("key: "+entry.getKey()+" value: "+entry.getValue());
}
}
Set
public static void main(String[] args) {
Set<String> fruits = new HashSet<String>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Apple"); // 重复元素,不会被添加
System.out.println("Fruits: " + fruits);
fruits.remove("Banana");
System.out.println("Fruits after removal: " + fruits);
boolean containsApple = fruits.contains("Apple");
System.out.println("Contains Apple: " + containsApple);
System.out.println("大小: " + fruits.size());
// TreeSet是Set接口的另一个实现类,它基于红黑树实现,并提供了对元素进行排序的功能。以下是一些常用的TreeSet方法:
Set<String> names = new TreeSet<String>();
names.add("Charlie");
names.add("Alice");
names.add("Bob");
System.out.println("Names: " + names);
names.remove("Bob");
System.out.println("Names after removal: " + names);
boolean containsCharlie = names.contains("Charlie");
System.out.println("Contains Charlie: " + containsCharlie);
String first = ((TreeSet<String>) names).first();
String last = ((TreeSet<String>) names).last();
System.out.println("First name: " + first);
System.out.println("Last name: " + last);
for(String str:names) System.out.println(str);
}
Queue
Queue
public static void main(String[] args) {
// 创建一个Queue对象
Queue<String> queue = new LinkedList<>();
// 添加元素到队列
queue.add("Apple");
queue.add("Banana");
queue.add("Orange");
// 获取队列头部元素
String head = queue.peek();
System.out.println("头部元素:" + head);
// 遍历队列并输出元素
System.out.println("队列元素:");
for (String element : queue) {
System.out.println(element);
}
// 移除队列头部元素
String removedElement = queue.poll();
System.out.println("移除的元素:" + removedElement);
// 队列大小
int size = queue.size();
System.out.println("队列大小:" + size);
// 判断队列是否为空
boolean isEmpty = queue.isEmpty();
System.out.println("队列是否为空:" + isEmpty);
}
Deque
public static void main(String[] args) {
// 创建一个Deque对象
Deque<String> deque = new ArrayDeque<>();
// 添加元素到双端队列
deque.addFirst("Apple");
deque.addLast("Banana");
deque.addLast("Orange");
// 获取双端队列头部和尾部元素
String first = deque.getFirst();
String last = deque.getLast();
System.out.println("头部元素:" + first);
System.out.println("尾部元素:" + last);
// 遍历双端队列并输出元素
System.out.println("双端队列元素(从头到尾):");
for (String element : deque) {
System.out.println(element);
}
// 移除双端队列头部和尾部元素
String removedFirst = deque.removeFirst();
String removedLast = deque.removeLast();
System.out.println("移除的头部元素:" + removedFirst);
System.out.println("移除的尾部元素:" + removedLast);
// 双端队列大小
int size = deque.size();
System.out.println("双端队列大小:" + size);
// 遍历双端队列并输出元素
System.out.println("双端队列元素(从头到尾):");
for (String element : deque) {
System.out.println(element);
}
// 判断双端队列是否为空
boolean isEmpty = deque.isEmpty();
System.out.println("双端队列是否为空:" + isEmpty);
}
PriorityQueue
public static void main(String[] args) {
//默认采用的是最小堆实现的
PriorityQueue<Integer> queue = new PriorityQueue<Integer>(10, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
return b-a; //if a>b 则交换,so这是递增序列
}
});
queue.offer(9);
queue.offer(13);
queue.offer(14);
int len = queue.size();
for (int i = 0; i < len; i++) {
System.out.println(queue.poll());
}
//输出 13 9
//默认采用的是最小堆实现的
PriorityQueue<Integer> queue2 = new PriorityQueue<>(10);
queue2.offer(8);
queue2.offer(11);
queue2.offer(9);
len = queue2.size();
for (int i = 0; i < len; i++) {
System.out.println(queue2.poll());
}
//输出 9, 11
System.out.println(queue2.size());
}