💥 该系列属于【Java基础编程500题】专栏,如您需查看Java基础的其他相关题目,请您点击左边的连接
目录
1. 【方法,数组】编写一个方法,该方法接收一个整数数组,使用循环找到数组中的最大值和最小值,并计算它们的平均值。
2. 【String,Map】输入一个字符串,输出该字符串中每个字符出现的次数,并按照字符的ASCII码值从小到大排序输出。
3. 【泛型,集合,Collections】定义一个泛型方法,将两个List合并为一个List,并去除重复元素。然后使用该方法和Collections工具类对合并后的List进行降序排序。
5. 【Math,Stream】生成一个长度为10000的[1,100]的随机整数数组,找出数组中的最大值和最小值,并计算它们的平均值。
6. 【String,StringBuilder,Stream,lambda表达式】将用户输入的字符串反转,并且将每个单词的首字母大写。
7. 【泛型,集合,Collections】编写一个泛型方法addElement,该方法接受一个List和一个元素,返回一个包含原始List和给定元素的新List。
9. 【String,集合,Stream,lambda表达式】输入一个字符串,输出该字符串中每个单词出现的次数,并按照单词出现的次数降序排序输出。
11. 【String,StringBuilder,Arrays】输入一个字符串,使用StringBuilder将字符串中的所有数字字符提取出来,并转换成整数数组,然后对这个数组进行降序排序并输出。
12. 【泛型,集合】定义一个泛型方法,接收两个Set集合,返回它们的交集。然后使用PriorityQueue将交集元素按自然顺序降序输出(请不要用TreeSet)。
13. 【泛型,集合】定义一个泛型类Pair,它包含两个泛型类型的字段。使用Pair类创建一个List,并添加几个Pair实例。,>
14. 【数组,Math,StringBuilder】编写一个程序,实现以下功能。
15. 【Character,String,StringBuilder】编写一个程序,实现以下功能。
16. 【泛型,匿名内部类,lambda表达式】编写一个程序,实现以下功能。
✨✨ 返回题目目录 ✨ ✨
1. 【方法,数组】编写一个方法,该方法接收一个整数数组,使用循环找到数组中的最大值和最小值,并计算它们的平均值。
public class Main {
public static void main(String[] args) {
int[] numbers = {3, 5, 1, 8, 2, 9, 4};
double[] results = findMinMaxAverage(numbers);
System.out.println("最大值: " + results[0]);
System.out.println("最小值: " + results[1]);
System.out.println("平均值: " + results[2]);
}
public static double[] findMinMaxAverage(int[] array) {
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
double sum = 0;
for (int num : array) {
if (num > max) max = num;
if (num < min) min = num;
sum += num;
}
return new double[]{max, min, sum / array.length};
}
}
2. 【String,Map】输入一个字符串,输出该字符串中每个字符出现的次数,并按照字符的ASCII码值从小到大排序输出。
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
// 方法一
Map<Character, Long> collect = str.chars()
.mapToObj(c -> (char) c)
.collect(Collectors.groupingBy(c -> c, Collectors.counting()));
TreeMap<Character, Long> map = new TreeMap<>(collect);
System.out.println(map);
// 方法二
Map<Character, Long> charCountMap = new TreeMap<>();
for (char c : str.toCharArray()) {
charCountMap.put(c, charCountMap.getOrDefault(c, 0L) + 1);
}
System.out.println(charCountMap);
}
}
3. 【泛型,集合,Collections】定义一个泛型方法,将两个List合并为一个List,并去除重复元素。然后使用该方法和Collections工具类对合并后的List进行降序排序。
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = new ArrayList<>(5);
Collections.addAll(list2, 1, 3, 5, 7, 9);
List<Integer> mergeList = merge(list1, list2);
Collections.sort(mergeList, Collections.reverseOrder());
System.out.println(mergeList);
}
public static <T> List<T> merge(List<T> list1, List<T> list2) {
Set<T> set = new HashSet<>(list1);
set.addAll(list2);
return new ArrayList<>(set);
}
}
4. 【面向对象,匿名内部类,lambda表达式】定义一个接口Compute,包含一个方法int compute(int a, int b)。使用匿名内部类和lambda表达式分别实现加法、减法、乘法和除法。
interface Compute {
int compute(int a, int b);
}
public class Main {
public static void main(String[] args) {
Compute add = new Compute() {
@Override
public int compute(int a, int b) {
return a + b;
}
};
Compute subtract = (a, b) -> a - b;
Compute multiply = (a, b) -> a * b;
Compute divide = (a, b) -> (b != 0 ? a / b : 0);
System.out.println("加法结果: " + add.compute(10, 5));
System.out.println("减法结果: " + subtract.compute(10, 5));
System.out.println("乘法结果: " + multiply.compute(10, 5));
System.out.println("除法结果: " + divide.compute(10, 5));
}
}
5. 【Math,Stream】生成一个长度为10000的[1,100]的随机整数数组,找出数组中的最大值和最小值,并计算它们的平均值。
import java.util.Arrays;
import java.util.OptionalDouble;
public class Main {
public static void main(String[] args) {
int[] arr = new int[10000];
for (int i = 0; i < 10000; i++) {
arr[i]= (int) (Math.random() * 100) + 1;
}
OptionalDouble average = Arrays.stream(arr).average();
average.ifPresent(System.out::println);
}
}
6. 【String,StringBuilder,Stream,lambda表达式】将用户输入的字符串反转,并且将每个单词的首字母大写。
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String string = sc.nextLine();
StringBuilder sb =new StringBuilder(string);
String reversedString = sb.reverse().toString();
String[] s = reversedString.split(" ");
String collect = Arrays.stream(s)
.map(str -> Character.toUpperCase(str.charAt(0)) + str.substring(1))
.collect(Collectors.joining(" "));
System.out.println(collect);
}
}
7. 【泛型,集合,Collections】编写一个泛型方法addElement,该方法接受一个List和一个元素,返回一个包含原始List和给定元素的新List。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6);
Integer element = 7;
List<Integer> newList = addElement(list, element);
System.out.println(newList);
}
public static <T> List<T> addElement(List<T> list, T element) {
List<T> newList = new ArrayList<>(list);
newList.add(element);
return newList;
}
}
8. 【集合,Collections,Stream,lambda表达式】将一个整数列表中{1,2,3,4,...,12}的每个元素乘以2,然后过滤出大于10的元素,并筛选出最大的3个值,最后将结果收集到一个新的列表中。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
List<Integer> newList = list.stream()
.map(n -> n * 2)
.filter(n -> n > 10)
.sorted(Collections.reverseOrder())
.limit(3)
.collect(Collectors.toList());
System.out.println(newList);
}
}
9. 【String,集合,Stream,lambda表达式】输入一个字符串,输出该字符串中每个单词出现的次数,并按照单词出现的次数降序排序输出。
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
// String s = "this is a test string for a test program this is a test";
String[] strs = s.split(" ");
// 方法一:
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
map.put(strs[i], map.getOrDefault(strs[i], 0) + 1);
}
ArrayList<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());
entries.sort((o1, o2) -> o2.getValue() - o1.getValue()); //点击new即可让idea自动生成
System.out.println("单词出现次数(降序):");
entries.forEach(a -> System.out.println(a.getKey() + " : " + a.getValue()));
// 方法二:
System.out.println("单词出现次数(降序):");
Arrays.stream(strs)
.collect(Collectors.groupingBy(a -> a, Collectors.counting()))
.entrySet()
.stream()
.collect(Collectors.toList())
.stream()
.sorted((o1, o2) -> o2.getValue().intValue() - o1.getValue().intValue())
.forEach(entry -> System.out.println(entry.getKey() + " : " + entry.getValue()));
}
}
10. 【面向对象,匿名内部类】定义一个接口Shape,包含一个方法double getArea()。实现几个具体的形状类(如Circle、Rectangle),并使用lambda表达式创建一个匿名类来表示另一个形状。
interface Shape {
double getArea();
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
public class Main {
public static void main(String[] args) {
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(4, 3);
Shape square = new Shape() {
@Override
public double getArea() {
return 6 * 6;
}
};
System.out.println("Circle area: " + circle.getArea());
System.out.println("Rectangle area: " + rectangle.getArea());
System.out.println("Square area: " + square.getArea());
}
}
11. 【String,StringBuilder,Arrays】输入一个字符串,使用StringBuilder将字符串中的所有数字字符提取出来,并转换成整数数组,然后对这个数组进行降序排序并输出。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// Scanner sc= new Scanner(System.in);
// String test = sc.nextLine();
String test = "a1b2c3d4e5";
StringBuilder sb = new StringBuilder();
for (char i : test.toCharArray()) {
if (Character.isDigit(i)) {
sb.append(i);
}
}
String string = sb.toString();
Integer[] num = new Integer[string.length()];
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
num[i] = c - '0';
}
Arrays.sort(num, (o1, o2) -> o2 - o1);
System.out.println(Arrays.toString(num));
}
}
12. 【泛型,集合】定义一个泛型方法,接收两个Set集合,返回它们的交集。然后使用PriorityQueue将交集元素按自然顺序降序输出(请不要用TreeSet)。
import java.util.*;
public class Main {
public static void main(String[] args) {
Set<Integer> set1 = Set.of(1, 2, 3, 4, 5, 6, 8);
Set<Integer> set2 = Set.of(1, 4, 5, 6, 7, 8, 10);
Set<Integer> set3 = intersection(set1, set2);
PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);
queue.addAll(set3);
System.out.println(queue); // 并不是以排序的顺序打印出来,数据结构是最小或最大堆
while (!queue.isEmpty()) {
System.out.print(queue.poll() + " ");
}
}
public static <T> Set<T> intersection(Set<T> set1, Set<T> set2) {
Set<T> set = new HashSet<>(set1);
set.retainAll(set2);
return set;
}
}
13. 【泛型,集合】定义一个泛型类Pair<T, K>,它包含两个泛型类型的字段。使用Pair类创建一个List<Pair>,并添加几个Pair实例。
import java.util.List;
class Pair<T, K> {
private T first;
private K second;
public Pair(T first, K second) {
this.first = first;
this.second = second;
}
public T getFirst() {
return first;
}
public K getSecond() {
return second;
}
}
public class Main {
public static void main(String[] args) {
Pair<String, Integer> p1 = new Pair<>("你好", 1);
Pair<String, Integer> p2 = new Pair<>("世界", 2);
Pair<String, Integer> p3 = new Pair<>("Java", 3);
List<Pair<String, Integer>> pairs = List.of(p1, p2, p3);
for (Pair<String, Integer> pair : pairs) {
System.out.println(pair.getFirst() + " - " + pair.getSecond());
}
}
}
14. 【数组,Math,StringBuilder】编写一个程序,实现以下功能。
- 创建一个整型数组,包含100个随机整数(范围10-50)。
- 使用循环计算数组中所有偶数的和。
- 使用StringBuilder将数组中的奇数转换为字符串,并用逗号分隔。
- 输出偶数和与奇数字符串。
public class Main {
public static void main(String[] args) {
int[] arr = new int[100];
int sum = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
arr[i] = 10 + (int) (Math.random() * 41);
if (arr[i] % 2 == 0) {
sum += arr[i];
} else {
sb.append(arr[i]).append(",");
}
}
System.out.println(sum);
System.out.println(sb);
}
}
15. 【Character,String,StringBuilder】编写一个程序,实现以下功能。
- 输入一个字符串。
- 将字符串中的所有小写字母转换为大写。
- 计算字符串中元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)的个数。
- 输出转换后的字符串和元音字母个数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
// String input = "Hello World";
StringBuilder sb = new StringBuilder();
int vowelCount = 0;
for (char c : input.toCharArray()) {
if ("aeiouAEIOU".indexOf(c) != -1) {
vowelCount++;
}
sb.append(Character.toUpperCase(c));
}
System.out.println("转换后的字符串:" + sb.toString());
System.out.println("元音字母个数:" + vowelCount);
}
}
16. 【泛型,匿名内部类,lambda表达式】编写一个程序,实现以下功能。
- 定义一个自定义泛型接口
MyInterface<T>
,包含一个方法print(T t)
。- 创建一个类
MyClass
,实现MyInterface<String>
。- 在
Main
方法中使用匿名内部类实现MyInterface<Integer>
,并调用- 使用lambda表达式实现
MyInterface<Double>
,并调用
interface MyInterface<T> {
void print(T t);
}
class MyClass implements MyInterface<String> {
@Override
public void print(String s) {
System.out.println(s);
}
}
public class Main {
public static void main(String[] args) {
MyInterface<String> strPrint = new MyClass(); //<String>可写可不写,但最好是写上
strPrint.print("你好");
MyInterface<Integer> intPrint = new MyInterface<Integer>() {
@Override
public void print(Integer o) {
System.out.println(o);
}
};
intPrint.print(123);
MyInterface<Double> doublePrint = System.out::println;
doublePrint.print(123.456);
}
}