在java中获取数组的子字符串

在java中获取数组的子字符串,java,arrays,substring,Java,Arrays,Substring,我想遍历一个int[]数组并从中获取子字符串值。例如,如果我的数组是{1,2,1,4},我希望能够拉出{1,2}并将其与{1,4}进行比较,或者我希望拉出{1,2,1}并将其与{4,1,2}进行比较。我的问题是,我想遍历一个数组,看看数组中是否再次显示“substring”值,但顺序相反 我知道对于字符串,您有子字符串(包含、排除),数组是否有类似的内容,或者我是否必须将数组转换为字符串才能执行此操作 您能不能简单地确定您希望使用的数组中的数字集和位置形式,然后从下一个索引开始搜索序列中的第一个

我想遍历一个
int[]
数组并从中获取子字符串值。例如,如果我的数组是
{1,2,1,4}
,我希望能够拉出
{1,2}
并将其与
{1,4}
进行比较,或者我希望拉出
{1,2,1}
并将其与
{4,1,2}
进行比较。我的问题是,我想遍历一个数组,看看数组中是否再次显示“substring”值,但顺序相反


我知道对于字符串,您有子字符串(包含、排除),数组是否有类似的内容,或者我是否必须将数组转换为字符串才能执行此操作

您能不能简单地确定您希望使用的数组中的数字集和位置形式,然后从下一个索引开始搜索序列中的第一个或最后一个数字,然后在找到后开始搜索下一个数字

也就是[1,4,5,1,3,1,4,2],我们想要取[1,4]并在数组中找到它的相反位置


从索引2开始:[5]!=1 -> [1] == 1 -> [3] != 4 -> [3] != 1->[1]==1->[4]==4,成功

您只需将数组中的每个数字与ur集合的最后一个数字进行比较,如果它们匹配,则进入一个循环,检查下一个数字是否与ur集合的最后一个数字相同,但只有一个,依此类推。 否则你就会说不匹配

                                       Or
可以在给定数组中按相反顺序遍历以检查集合。
可能有点长,但对所有人来说都很好

如果其他内容不需要字符串表示,您可以(而且可能应该)使用数组中的数字

此函数用于检查int数组中区间的对称性。您可以更改ini的参数,end而不是ini,length如果您愿意,当然可以相应地更改算法

public boolean checkSymmetry(int[] data, int ini, int length) {
    // Iterates the interval of interest
    for (int i=ini; i<ini+length-1; i++) {
        // The symmetric position: start from the end (length),
        // come back i positions and sum one (because arrays starts on 0)
        int symmetricPos = data.length - i - 1;
        if (data[i] != data[symmetricPos]) {
            return false;
        }
    }
    return true;
}
public boolean checkSymmetry(int[]data,int ini,int length){
//迭代感兴趣的时间间隔

对于(int i=ini;i您可以将整数数组转换为字符串,但是,
Arrays.toString()
函数会将其逐字转换。这样,从
{1,2,2,1}
转换为
[1,2,2,1]
。有关详细信息,请参阅

// strTest -> [1, 2, 2, 1]
String strTest = Arrays.toString(test);
但是,您可以使用
String.replace()
String.replaceAll()
函数删除方括号、逗号和空格。从
[1,2,2,1]
1221

// strTest -> 1221
strTest = strTest.replaceAll(", ", "").replace("[", "").replace("]", "");
如果要反转现有字符串,可以使用
StringBuffer.reverse()
函数

// use StringBuffer to acquire reverse of text
StringBuffer buffer = new StringBuffer(strTest.substring(2, 4)); // it will get '21' of '1221'
String revStrTest = buffer.reverse().toString(); // from '21' to '12'
以下是完整的代码:

// from array of test
int[] test = { 1, 2, 2, 1};

// strTest -> [1, 2, 2, 1]
String strTest = Arrays.toString(test);

// strTest -> 1221
strTest = strTest.replaceAll(", ", "").replace("[", "").replace("]", "");

System.out.print(strTest.substring(0, 2) + " == " + strTest.substring(2, 4) + " : ");

// checks 12 and 21
if(strTest.substring(0, 2).equals(strTest.substring(2, 4)))
    System.out.println("EQUAL");
else
    System.out.println("NOT EQUAL");

// use StringBuffer to acquire reverse of text
StringBuffer buffer = new StringBuffer(strTest.substring(2, 4)); // it will get '21' of '1221'
String revStrTest = buffer.reverse().toString(); // from '21' to '12'

System.out.print(strTest.substring(0, 2) + " == " + revStrTest + " : ");

// checks 12 of strTest and 12 of revStrTest
if(strTest.substring(0, 2).equals(revStrTest))
    System.out.println("EQUAL");
else
    System.out.println("NOT EQUAL");

“反向”顺序是什么意思?为什么要将
{1,2,1}
{4,1,2}
进行比较,以及如何进行比较?请分享更多明确要求和理解的示例。
java.util.array.copyOfRange
(专门针对每个基本元素类型或对象)以相同的顺序给出一部分,如String.substring.AFAICT。没有直接的方法反转数组。