你如何检查ArrayList,Java中每个元素的最后2位数?

时间:2016-10-20 17:45:54

标签: java arraylist

我遇到了一个问题,我的ArrayList包含100-99999999之间的整数。 ArrayList的大小各不相同。我的任务是我必须搜索ArrayList以查找具有相同后两位数的元素。

例如,如果ArrayList包含以下内容:[100, 7999, 1023, 5556723, 6011, 48823]并且我要求它打印所有以" 23" ...结尾的元素应打印" 1023, 5556723, 48823"。

解决此问题的最佳方法是什么?我假设您必须使用循环来搜索每个元素,但是,您如何确保它只检查最后两位数?

谢谢。

编辑:我想您也可以过滤掉任何不满足条件的元素,然后打印ArrayList中剩余的剩余元素?我不确定这是否可能。

3 个答案:

答案 0 :(得分:3)

您可以依靠Stream APIInteger转换为String并检查它们是否以下一个给定后缀结尾:

List<Integer> values = Arrays.asList(100, 7999, 1023, 5556723, 6011, 48823);
String suffix = Integer.toString(23);
values.stream()
    .filter(i -> Integer.toString(i).endsWith(suffix))
    .forEach(System.out::println);

<强>输出:

1023
5556723
48823

或者如果您只对打印结果感兴趣,也可以:

System.out.println(
    values.stream()
        .map(i -> Integer.toString(i))
        .filter(s -> s.endsWith(suffix))
        .collect(Collectors.joining(", "))
);

<强>输出:

1023, 5556723, 48823

另一种模100的方法必须等于我们的后缀。

int value = 23;
System.out.println(
    values.stream()
        .filter(i -> i % 100 == value)
        .map(i -> Integer.toString(i))
        .collect(Collectors.joining(", "))
);

<强>输出:

1023, 5556723, 48823
  

如何存储过滤后的值供以后使用?代替   打印它。

如果选择了Collector,例如,假设您要获得List,那么之前的代码就是:

int value = 23;
List<Integer> result =
    values.stream()
        .filter(i -> i % 100 == value)
        .collect(Collectors.toList());
System.out.println(result);

<强>输出:

[1023, 5556723, 48823]

答案 1 :(得分:1)

您可以使用模数运算符(%) 这将返回将一个数字除以另一个数字的余数。因此,在您的情况下,您可以执行 n%100 来获取最后两位数字。对于 n%(10 ^ D)==最后D位的任意数量的数字D,可以重复此操作。

答案 2 :(得分:1)

幸运的是,根据您在项目中搜索的深度,有很多方法可以解决此问题。

最好的&#39;在这种情况下,方式有点过于通用,因为你还没有明确说明为什么你会遇到这个问题(例如,对于公司来说?对于学校?项目?有趣吗?)。因此,在不知道需要如何完成此操作的要求的情况下,我将建议两种方式(不提供代码),以确定如何确定数组的数组列表是否具有相同的最后两位数字:

  1. 您可以从数组中的每个数字中减去任何数字,然后使用模运算符查看哪些数字可以均分为100。 EX:数字是23 ...(1023 - 23)%100 = 0但是(1021-23)%100!= 0所以满足这个条件的数字将包含最后两位数字。
  2. 显然这种方法是有缺陷的,因为如果数字是23则23-23 = 0和0%100 = 0,24,25,26 ...... 98,99等也是如此,所以你必须考虑到那种情况(即,如果N <100)

    1. 您可以将数组中的元素转换为字符串并检查每个字符串中的最后两个字符,即如果1023是数字,那么23将是字符数组中的字符2和3(lol),可以找到使用索引length-1length-2
    2. 我希望这些想法有所帮助!