我只是在练习java。
我有这个包含重复值的ArrayList。
我想遍历此列表,以便它可以按组打印这些重复值。
这是我的方法所包含的内容。
{
"compilerOptions": {
"allowJs": true,
"outDir": "./dist",
"target": "ES6",
"module": "commonjs",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": true,
"noImplicitAny": false,
"strictNullChecks": true,
"noUnusedLocals": true,
"types": [
"node"
],
"typeRoots": [
"./node_modules/@types"
],
"lib": ["es2015", "dom"]
},
"include": [
"./src/"
]
}
并打印如下。
我想做的就像打印一样
请帮我解决这个问题。 感谢。
答案 0 :(得分:2)
很简单,当前一个值与当前值不同时添加换行符。但是,你不应该使用raw types。你应该对List
进行排序(并且更喜欢具体类型的接口)。您可以使用Arrays.asList
初始化List
。像,
List<Integer> nomero = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3));
Collections.sort(nomero);
for (int i = 0; i < nomero.size(); i++) {
if (i > 0 && nomero.get(i - 1) != nomero.get(i)) {
System.out.println();
}
System.out.println(nomero.get(i));
}
答案 1 :(得分:1)
所以,在一个非常基础的层面上,你需要知道&#34;最后一个值&#34;是,当它等于&#34;当前值&#34;时,你添加一个新行并更新&#34;最后一个值&#34;等于&#34;当前值&#34;
ArrayList<Integer> nomero = new ArrayList<>();
nomero.add(1);
nomero.add(1);
nomero.add(2);
nomero.add(2);
nomero.add(3);
nomero.add(3);
int lastValue = nomero.get(0);
for (int i = 0; i < nomero.size(); i++) {
int nextValue = nomero.get(i);
if (nextValue != lastValue) {
System.out.println("");
lastValue = nextValue;
}
System.out.println(nextValue);
}
这确实假设列表已经排序
答案 2 :(得分:0)
Java 8简化了......
List<Integer> nomero = Arrays.asList(1, 1, 2, 2, 3, 3);
Map<Integer, Long> map = nomero.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
for (Integer i : map.keySet()) {
for (int j = 0; j < map.get(i); j++) {
System.out.println(i);
}
System.out.println();
}