如何将字符串转换为数组然后在 Java 中对数组进行重复数据删除?

How to cast a String as an Array then dedupe Array in Java?

这个问题的核心重点是使用逗号分隔符和重复条目处理 Java 中的字符串,以便它 returns 一个去重的、逗号分隔的字符串(全部在一行中并使用原生 类)。

A.) 将逗号分隔的字符串转换为数组,

B.) 删除该数组的重复数据,然后将其转换回字符串

C.) 检查新删除的字符串以查看有多少个唯一条目,例如 1 个逗号表示有 2 个 原始唯一条目.

D.) 如果可能的话,以上所有内容必须压缩成一行。 (如果不是,至少A和B是一条线,C线是自己的线。

以下是使用 JavaScript 和 jQuery 对上面概述内容的 reference/picture。这只是轶事。

考虑 jQuery 中的以下代码,将 string 转换为 array,然后通过首先将其转换为 string 来删除重复数据 array然后再次将其转换为 array 以利用强大的 $.unique() jQuery 函数。

var daysProxyArray = "Monday,Monday,Friday,Friday".split(',');
daysProxyArray = $.unique(daysProxyArray.toString().split(','));
console.log(daysProxyArray.toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

有谁知道如何在一行中执行 Java 中的等效操作,最终结果是一个字符串,我可以计算出逗号出现了多少次?这样,如果出现 2 个逗号,我就会知道 3 unique 天在 original string.

如果你想计算逗号的数量,下面的代码应该可以做到(在 Java 8+ 中):

String text = "Monday,Monday,Friday,Friday";
long numCommas = text.chars().filter(c -> c == ',').count();
Arrays.stream("Monday,Monday,Friday,Friday".split(","))
                .distinct()
                .collect(Collectors.joining(","));

要在 Java 中实现您在 JQuery 中所做的事情:

  1. 首先需要对字符串进行拆分,得到一个包含拆分元素的字符串数组。

  2. 然后,将返回的数组传递给 Set 以仅保留唯一元素。由于 Set 不直接接受数组,因此您首先需要使用 Arrays class.

    asList 静态方法
  3. 最后,打印 Set 或从 Set 获取数组并打印它。

//Splitting the string
String[] daysProxyArray = "Monday,Monday,Friday,Friday".split(",");

//Using a collection set to only keep the unique elements
Set<String> set = new HashSet(Arrays.asList(daysProxyArray));

//You could either print the set...
System.out.println(set);

//...Or returning the set's elements into an array and use that if you actually need an array
String[] res = new String[0];
res = set.toArray(res);
System.out.println(Arrays.toString(res));