gpt4 book ai didi

java - 如何避免排序字符串数组中的重复值?

转载 作者:行者123 更新时间:2023-12-01 17:56:31 26 4
gpt4 key购买 nike

我发现这段代码旨在避免数字的重复值,因此我将其更改为考虑字符串元素。它成功地避免了打印时的重复名称,但它不会按字母顺序对名称进行排序。

我还希望它不会打印特定元素“空”,因为稍后将通过输入用名称进行更新。

这是基于预订系统以升序对名称进行排序,因此空元素称为“空”。
请有人帮助我。

String[] a ={"Anne","Anne","Afrid","vacant","vacant","Sammy","Dora","vacant"};
HashSet<String> nameSet = new HashSet<>();
for (int i = 0; i < a.length;i++){
nameSet.add(a[i]);
}
for (String name: nameSet) {
System.out.println(name+" ");
}

最佳答案

这是执行以下操作的简单代码,

  1. 删除重复项
  2. 删除空缺
  3. 删除任何包含 null 的内容
  4. 对列表进行排序,忽略大小写
  5. 打印它们
    public static void main(String argv[]) {
//Input
String[] a = { "Anne", "Anne", "Afrid", "vacant", "vacant", "Sammy", "Dora", "vacant" };
List<String> list = Stream.of(a) //Convert to Stream
.filter(Objects::nonNull) //Remove Null values
.sorted(new IgnoreCaseStringSorter()) //Sort ignore case
.distinct() //Remove duplicates
.filter(name -> !name.equalsIgnoreCase("vacant")) //Remove "vacant"
.collect(Collectors.toList()); //Convert to list
System.out.println("Names: ");
list.stream().forEach(System.out::println);//Print the list

}
static class IgnoreCaseStringSorter implements Comparator<String> {
// Used for sorting in ascending order
public int compare(String a, String b) {
return a.compareToIgnoreCase(b);
}
}

输出:

Names: 
Afrid
Anne
Dora
Sammy

关于java - 如何避免排序字符串数组中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60707113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com