无法将唯一值放入数组中

时间:2014-02-28 17:39:24

标签: java arrays set unique

所以我有一个国家列表,我正在阅读一个文本文件,有些国家不止一次。我需要将每个国家/地区名称放入一个没有任何双打的字符串数组中,或者将国家/地区放在那里两次。我尝试使用for循环,但无法绕过这个所需的逻辑。

提前致谢。

3 个答案:

答案 0 :(得分:1)

尝试使用Set。集合可以包含一个且不超过一个特定实例(instance1.equals(instance2)不会是true)。
像这样实例化Set

Set<String> s = new HashSet<String>();

然后使用for循环添加值。

String[] countries = {"JP", "US", "CN", "RU", "RU"};  //just make pretend these were read from a file.
for (String countryName: countries){
     s.add(countryName); // RU will only be added once
}

System.out.println(s);

输出:[JP,US,RU,CN]

答案 1 :(得分:0)

我可以通过三种不同的方式看到它的工作原理:

  1. 使用套装。这是最有效和最简单的,并使用有效的代码

  2. 每次读入元素时,遍历数组,查看数组是否已包含该元素。如果是,请不要添加它。如果你不能使用Sets,这是最容易编写的代码。

  3. 读入所有元素,对数组进行排序。遍历数组,如果当前元素不等于前一个元素,则将其添加到新数组中。这比#2(O(nlog(n)) vs O(n^2))更有效,但需要更多代码。

答案 2 :(得分:0)

要检查某个国家/地区是否在数组中,请使用if语句。当您在每个国家/地区阅读时,会检查是否存在于数组中。如果没有,则将国家/地区添加到阵列中。

if(!Arrays.asList(yourArr).contains(country)){
     yourArr[i] = country;
    }