我正在寻找一个解决方案,我可以从另一个中获取包含数组。
例如: 我有一个数组: 数组= [S1 !! T1,S1 !! T2,S1 !! T3,S2 !! T1,S2 !! T2,S3 !! T1,S3 !! T2,S3 !! T3]
我在“Array”中寻找包含“S2”的元素并将它们写入另一个元素。所以我应该得到:
结果= [S2 !! T1,S2 !! T2]
我已经尝试了Arrays.asList(I).contains(i)
,但这不是我想象的那样。
答案 0 :(得分:1)
如果您希望将一个数组的元素复制到另一个数组,首先需要做的是遍历一个数组的元素,如果找到匹配项,则将其存储到另一个数组中。
假设你有以下数组:
String[] arr = new String[]{"S1!!T1", "S1!!T2", "S1!!T3", "S2!!T1", "S2!!T2", "S3!!T1", "S3!!T2", "S3!!T3"};
我们不知道数组中有多少元素会匹配,直到我们遍历它们,所以我们有两个选择:
见下文:
public static void main(String[] args) {
String[] arr = new String[]{"S1!!T1", "S1!!T2", "S1!!T3", "S2!!T1", "S2!!T2", "S3!!T1", "S3!!T2", "S3!!T3"};
List<String> s2List = new ArrayList<String>();
//loop through arr and for each element check if it contains S2
for(int i = 0; i < arr.length; i++) {
//if it contains S2 then it returns true and we add it to list
if(arr[i].contains("S2")) {
//add to list the element
s2List.add(arr[i]);
}
}
//print the list for testing
System.out.println(s2List);
//if you wish to store the elements to array then
//now we know how many matched, so we can create array with the
//size of elements in s2List
String[] sArr = new String[s2List.size()];
//Here loop through the list and assign values to array
for(int i = 0; i < s2List.size() ; i++) {
sArr[i] = s2List.get(i);
}
//print the array
System.out.println(Arrays.toString(sArr));
}
您还可以使用其他将List直接转换为数组的方法,但上面的内容可以让您了解如何解决您提出的问题。
答案 1 :(得分:0)
您可以使用Java 8流
String[] filtered = Stream.of(strings).filter(s -> s.contains("S2")).toArray(String[]::new);