gpt4 book ai didi

java - 有更好的方法吗?我想从一个数组中将字符减去到另一个数组中

转载 作者:行者123 更新时间:2023-12-01 12:32:34 24 4
gpt4 key购买 nike

所以我在这里基本上想做的是从包含“A”中所有字母的数组中取出“S”“P”“O”“R”“T”等字符... 'Z'这段代码工作正常,但我想知道是否有更好的方法来做到这一点..更简化的版本左右..我会很感激只涉及数组n而不是列表或散列的答案!

String key = "SPORT";
char [] keys = key.toCharArray();

String alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] alpha = alphabets.toCharArray();
int len = alpha.length;
int keylen = keys.length;
System.out.println(len);
int new_len = (alpha.length) - keylen;
char [] newalpha = new char [new_len];
for (int j = 0 ; j < keys.length ; j++) {
for (int i = 0 ; i < len ; i++) {
if (alpha[i] == keys[j]) {
alpha[i] = '@';
}
}
}
int k = 0;
for (int i = 0 ; i < len ; i++) {
if (alpha[i] != '@') {
newalpha[k] = alpha[i];
k++;
}
}
for (int i = 0 ; i < newalpha.length ; i++) {
System.out.println(newalpha[i]);
}

最佳答案

在 Java 8 中

代码:

    String alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<String> list = Arrays.asList(alphabets.split(""));

List<String> result = list.stream().filter(s -> !(s.equals("S") || s.equals("P") || s.equals("O")
|| s.equals("R") || s.equals("T"))).collect(Collectors.toList());
System.out.println("The list of letters after after extractison S P O R T are ");
result.stream().forEach(s -> System.out.print(" " + s));
System.out.println("");
System.out.println("The number of letters after extractison S P O R T is " + result.stream().count());

输出:

The list of letters after after extractison S P O R T are 
A B C D E F G H I J K L M N Q U V W X Y Z
The number of letters after extractison S P O R T is 21

说明:

据我所知,Java 8 中的 lambda 仅适用于 List,因此我使用 Arrays.asList 将字符串转换为列表。接下来,我使用 filter ,其工作方式类似于 if 语句来遍历列表并忽略 S P O RT 并收集它们作为 List 命名结果。最后,我使用新形式的 for 循环 打印列表,并显示提取这些字母后我们有多少个字母。

清理版本:

import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;


public class TakeOutChars {

public static void main(String[] args) {
String alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<String> list = Arrays.asList(alphabets.split(""));
System.out.println(filterSPORT(list, ignoreSPORT()));
System.out.println(filterSPORT(list, ignoreSPORT()).stream().count());
}

public static Predicate ignoreSPORT() {
return s -> !(s.equals("S") || s.equals("P") || s.equals("O")
|| s.equals("R") || s.equals("T"));

}

public static List<String> filterSPORT(List list, Predicate predicate) {
return (List<String>) list.stream().filter( predicate ).collect(Collectors.toList());
}
}

清理版本的输出:

[A, B, C, D, E, F, G, H, I, J, K, L, M, N, Q, U, V, W, X, Y, Z]
21

关于java - 有更好的方法吗?我想从一个数组中将字符减去到另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25830755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com