long temp;
for ( int i = 0; i < size; i++ )
{
temp = ls.get(i);
System.out.println("temp is:" + temp);
for ( int j = 0; j < size; j++)
{
if ( i == j )
{
}
else if ( ls.get(i) == ls.get(j) )
{
// If Duplicate, do stuff... Dunno what yet.
System.out.println(ls.get(i)+" is the same as: " + ls.get(j) );
//System.out.println("Duplicate");
}
}
}
我有一个Long类型的列表,它填充了几个9位数字,如900876012,我正在检查重复项,以便我可以生成新的数字并在导出到文件之前替换副本。
首先,我检查数组中的位置是否相同,因为位置1处的位置显然在位置1的同一列表中相同,如果是,则忽略。
然后,我检查内容是否相同,但由于某种原因它没有评估为真,它之前作为一个简单的“if”自己做了。
这里参考数字,只需忽略“temp is”:
temp is:900876512
temp is:765867999
temp is:465979798
temp is:760098908
temp is:529086890
temp is:765867999
temp is:529086890
temp is:800003243
temp is:200900210
temp is:200900210
temp is:542087665
temp is:900876512
temp is:900876512
temp is:900876512
temp is:900876512
以下是完整的参考方法:
public static void CheckContents(BufferedReader inFileStreamName, File aFile, Scanner s ) throws DuplicateSerialNumberException
{
System.out.println();
List<Long> ls = new ArrayList<Long>();
List<String> ls2 = new ArrayList<String>();
long SerialNum = 0;
int counter = 0;
int size = 0;
String StringBuffer;
while (s.hasNextLine())
{
ls.add(s.nextLong());
//System.out.println();
StringBuffer = s.nextLine();
ls2.add(StringBuffer);
size = ls.size();
//System.out.println(ls.size());
SerialNum = ls.get(size-1);
//System.out.println(ls.get(size-1));
System.out.println("Serial # is: " + SerialNum);
//System.out.println(SerialNum + ": " + StringBuffer);
counter++;
}
long temp;
for ( int i = 0; i < size; i++ )
{
temp = ls.get(i);
System.out.println("temp is:" + temp);
for ( int j = 0; j < size; j++)
{
if ( i == j )
{
}
else if ( ls.get(i) == ls.get(j) )
{
// If Duplicate, do stuff... Dunno what yet.
System.out.println(ls.get(i)+" is the same as: " + ls.get(j) );
//System.out.println("Duplicate");
}
}
}
}
答案 0 :(得分:1)
一个不错的。
在列表中,您不存储float
(原始)但Float
个对象。自动装箱让您对自己透明。
并且==
比较器不能与对象一起使用(它告诉两个对象是否相同,但是如果你有两个对象持有相同的值,则返回false
)。
您可以使用
if ( ls.get(j).equals(ls.get(i))
或(因为它是List<Long>
)
if ( ls.get(j).longValue() == ls.get(i).longValue())
甚至(感谢自动装箱)
if ( ls.get(j).longValue() == ls.get(i))
答案 1 :(得分:0)
请尝试
else if ( ls.get(i) != null && ls.get(i).equals(ls.get(j)) )
代替