所以我有一个国家列表,我正在阅读一个文本文件,有些国家不止一次。我需要将每个国家/地区名称放入一个没有任何双打的字符串数组中,或者将国家/地区放在那里两次。我尝试使用for循环,但无法绕过这个所需的逻辑。
提前致谢。
答案 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)
我可以通过三种不同的方式看到它的工作原理:
使用套装。这是最有效和最简单的,并使用有效的代码
每次读入元素时,遍历数组,查看数组是否已包含该元素。如果是,请不要添加它。如果你不能使用Sets,这是最容易编写的代码。
读入所有元素,对数组进行排序。遍历数组,如果当前元素不等于前一个元素,则将其添加到新数组中。这比#2(O(nlog(n))
vs O(n^2)
)更有效,但需要更多代码。
答案 2 :(得分:0)
要检查某个国家/地区是否在数组中,请使用if语句。当您在每个国家/地区阅读时,会检查是否存在于数组中。如果没有,则将国家/地区添加到阵列中。
if(!Arrays.asList(yourArr).contains(country)){
yourArr[i] = country;
}