我是java的新手,必须完成这项任务。问题是,如何从数组中计算方法中的所有重复项并将其列为:
int [] arr = new int[] {2,5,6,1,2,1,5,3,6,1,2,1,5};
Arrays.sort(arr);
值必须按整数排序,并按以下方式列出:
答案 0 :(得分:1)
您可以像这样使用地图:
int[] arr = new int[]{2, 5, 6, 1, 2, 1, 5, 3, 6, 1, 2, 1, 5};
Arrays.sort(arr);
Map<Integer, Integer> map = new HashMap<>();
for (Integer i : arr) {
//if the key exit then increment it else add a new element
if (map.containsKey(i)) {
map.put(i, map.get(i)+1);
}else{
map.put(i, 1);
}
}
//display your map
map.forEach((key, value) -> {
System.out.println(". " + key + " - " + value);
});
这将告诉你:
.1 - 4
.2 - 3
.3 - 1
.5 - 3
.6 - 2
答案 1 :(得分:1)
您可以使用TreeMap
来保持按键排序的项目,只需为每次出现增加一个计数器。
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class Counter {
public static void main(String[] args) {
int[] arr = { 2, 5, 6, 1, 2, 1, 5, 3, 6, 1, 2, 1, 5 };
Map<Integer, Integer> frequency = count(arr);
for (Entry<Integer, Integer> freq : frequency.entrySet()) {
System.out.printf("%s - %s%n", freq.getKey(), freq.getValue());
}
}
public static Map<Integer, Integer> count(int[] items) {
Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (int item : items) {
map.put(item, 1 + (map.containsKey(item) ? map.get(item).intValue() : 0));
}
return map;
}
}
答案 2 :(得分:1)
您也可以在一行中完成。
@Override
public Completable loginUserThatIsAlreadySavedInDevice(String password) {
return getUserIdAlreadySavedInDevice()
.flatMapCompletable(s -> login(password, s))
}