Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查数组的第一个元素是否需要唯一_Java_Arrays_Unique - Fatal编程技术网

Java 检查数组的第一个元素是否需要唯一

Java 检查数组的第一个元素是否需要唯一,java,arrays,unique,Java,Arrays,Unique,我有一个分号分隔的文本文件。其思想是逐行读取文本文件。每行将被拆分为一个数组元素 现在我想做一些检查,比如ID(第一个元素称为“referez”)是否唯一,是否所有必填字段都已填充,等等 我想我得把身份证放在名单上。对于下一行,我必须将ID与列表中的ID进行比较 所以问题是这是正确的方式,以及如何实现这一点 以下是我目前的代码: public class Test_Line2Array { public static void main(String[] args) { String strLi

我有一个分号分隔的文本文件。其思想是逐行读取文本文件。每行将被拆分为一个数组元素

现在我想做一些检查,比如ID(第一个元素称为“referez”)是否唯一,是否所有必填字段都已填充,等等

我想我得把身份证放在名单上。对于下一行,我必须将ID与列表中的ID进行比较

所以问题是这是正确的方式,以及如何实现这一点

以下是我目前的代码:

public class Test_Line2Array {
public static void main(String[] args) {
String strLine = "Referenz;field2;field3;field4;field5;field6;field7;Titel;Name1;Name2;Name3;field8;field9;field10;field11;field12;field13;field14;Street;field15;ZIP;field16;city;field17;dob;field18;field19;field20;field21;field22;field23;field24;field25;field26;field27;field28;field29;field30;field31;field32;field33;field34;field35;field36;field37;field38;field39;phone;mobile;CustomField1;CustomField2;CustomField3;CustomField4;CustomField5;CustomField6;CustomField7;CustomField8;CustomField9;CustomField10";


//declaration 
String[] stringArray;
String delimiter = ";";

// allocates memory for 59 strings
stringArray = new String[59];

// split the String after separator ";"
stringArray = strLine.split(";", -1);



// print array
for(int j = 0; j < stringArray.length; j++) {
        System.out.println(j + " " + stringArray[j]);
    }
}
公共类测试\u Line2Array{
公共静态void main(字符串[]args){
字符串strLine="参考;场2;场3;场4;场5;场6;场7;场1;场2;场3;场8;场9;场10;场11;场12;场13;场14;街道;场15;邮政;场16;城市;场17;dob;场18;场19;场20;场21;场22;场23;场24;场25;场26;场27;场28;场29;场30;场31;场32;场33;场34;场35;场36;场37;场38;场39;电话;手机;自定义字段1;自定义字段2;自定义字段3;自定义字段4;自定义字段5;自定义字段6;自定义字段7;自定义字段8;自定义字段9;自定义字段10”;
//声明
字符串[]字符串数组;
字符串分隔符=“;”;
//为59个字符串分配内存
stringArray=新字符串[59];
//拆分分隔符后的字符串“
stringArray=strLine.split(“;”,-1);
//打印阵列
对于(int j=0;j
要检查第一个元素是否唯一,可以使用以下选项:

Collections.frequency(Arrays.asList(stringArray), stringArray[0]) == 1

如果
stringArray
的第一个元素是唯一的,则返回一个
boolean
,即
true
,否则
false

我建议您使用分隔符
拆分字符串;
并将分隔的字符串添加到
列表中,在该列表中您可以轻松地使用
集合进行验证。frequency()
静态方法,返回事件的编号为
int

String[] values = strLine.split(";");
List<String> list = Arrays.asList(values);

if (Collections.frequency(list, list.get(0) > 1) {
    System.out.println("The first value is not unique in the list");
}

对于每一行,将其
referez
放在
HashSet
中。然后检查后续的
referez
是否唯一就像
referenzSet.contains(theNewReferenz)

初始化字符串[59]对您没有帮助;split方法只是返回一些在之后立即覆盖它的内容

如果您需要检查任何重复项,在这里使用HashSet会有所帮助

如果你只需要确保第一个元素没有重复,你可以在一个循环中完成。你已经有了一个,所以

// print array
for(int j = 0; j < stringArray.length; j++) {
        if (stringArray[0].equals(stringArray(j)) { 
            System.out.println("Duplicate!");
        }
        System.out.println(j + " " + stringArray[j]);
    }
}
//打印数组
对于(int j=0;j
如果您只想检查它们是否唯一,而不关心其中哪一个是重复的,那么只需将所有前元素添加到一个集合中,然后检查集合是否与数组大小相同。如果集合较小,则存在重复。无需分配数组的元素,如
String.split()
分配并返回一个新数组本身。只需声明数组并一次性初始化它:
String[]stringArray=strLine.split(“;”,-1);
为59个项目分配固定数组可能不是一个好方法。这就是我更喜欢使用列表而不是数组。我看不到任何向下投票-只是向上投票(有用)点击+2/-1,您还没有特权查看比率。没关系,我只是好奇如何改进我的答案。
// allocates memory for 59 strings
stringArray = new String[59];

// split the String after separator ";"
stringArray = strLine.split(";", -1);
// print array
for(int j = 0; j < stringArray.length; j++) {
        if (stringArray[0].equals(stringArray(j)) { 
            System.out.println("Duplicate!");
        }
        System.out.println(j + " " + stringArray[j]);
    }
}