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



我发现这段代码是为了避免数字的重复值,所以我把它改为考虑String元素。它在打印时成功地避免了重复的名称,但不按字母顺序对名称进行排序。

我还希望它不要打印特定的元素"空位",因为它稍后会通过输入用名称更新。

这是基于一个按升序对名称进行排序的预订系统,因此空元素被称为"空位">
请有人帮我。

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

最新更新