Java 在满足特定条件时交换arraylist中的元素
我有一个arraylist=Java 在满足特定条件时交换arraylist中的元素,java,arrays,sorting,arraylist,Java,Arrays,Sorting,Arraylist,我有一个arraylist=[1,2,2,0,0,0,0,0,0,0]或[0,1,1,3,2,2,0,0,0,0,0,0,3,0] 我希望它是=[1,0,0,0,0,2,0,0,0]或[1,1,0,0,0,0,2,2,0,0,0,0,3,0,0,0] 算法不仅仅是交换集合,还需要一个条件 所以数组的总元素总是可以除以最大值本身 例如,array[]=[1,2,2,0,0,0,0,0]包含2作为最大值,因此总元素可以除以2,因此每个条件有5个元素 然后数组应按其内部的从最小值到最大值排序。 之后,
[1,2,2,0,0,0,0,0,0,0]或[0,1,1,3,2,2,0,0,0,0,0,0,3,0]
我希望它是=[1,0,0,0,0,2,0,0,0]或[1,1,0,0,0,0,2,2,0,0,0,0,3,0,0,0]
算法不仅仅是交换集合,还需要一个条件
所以数组的总元素总是可以除以最大值本身
例如,array[]=[1,2,2,0,0,0,0,0]
包含2作为最大值,因此总元素可以除以2,因此每个条件有5个元素 然后数组应按其内部的从最小值到最大值排序。
之后,将零值作为5元素的其余部分
现在它应该是[1,0,0,0,0,2,2,0,0,0]
已实施:
List<Integer> list = new ArrayList<>(); // contains 1,2,0,0,0,0,0,0,0,0
List<Integer> newList = new ArrayList<>();
for (int i = 0; i < list.size(); i++){
if( i == list.size() - 1){
newList.add(list.get(i));
break;
}
if(list.get(i).equals(0) && list.get(i+1).equals(0)){
break;
} else if(!list.get(i).equals(0) && list.get(i+1).equals(0)){
newList.add(list.get(i));
break;
}
if(!list.get(i).equals(list.get(i+1))){
newList.add(list.get(i));
for(int j=0; j < 4; j++){ **// <== only added 4, not the rest of elements**
newList.add(0);
}
} else {
newList.add(list.get(i));
}
}
List List=new ArrayList();//包含1,2,0,0,0,0,0,0,0,0,0
List newList=newarraylist();
对于(int i=0;i 对于(int j=0;j<4;j++){**/您可以按如下方式进行尝试:
import java.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
列表=新的ArrayList(
asList(1,2,2,0,0,0,0,0,0));
System.out.println(“Output1:+getOutput(list));
列表=新的ArrayList(
asList(0,1,1,3,2,2,0,0,0,0,0,0,0,3,0));
System.out.println(“Output2:+getOutput(list));
}
公共静态列表getOutput(列表输入){
列表输出=新的ArrayList();
集合。排序(输入);
Map elementScontMap=countFreq(输入,输入.size());
int zerosCount=elementsCountMap.containsKey(0)?elementsCountMap.get(0):0;
int nonZeroScont=(ZeroScont==0)?elementScontMap.size():elementScontMap.size()-1;
int addingZeroCount=ZeroScont/非ZeroScont;
布尔isOdd=(addingZeroCount>0)和&(ZeroScont%addingZeroCount==0)?false:true;
布尔值isZeroAdded=false;
对于(Map.Entry:elementScontMap.entrySet())
{
if(entry.getKey()!=0){
对于(int j=0;j0){
对于(int j=0;j }
int i==0
-打字错误?抱歉,我似乎在问题文本中找不到问题。甚至找不到问题描述。你的问题是什么?如果代码运行,什么不按预期工作?你实际得到了什么样的结果,而不是你预期的结果?看起来array
和newArray
实际上不是数组。(提示:ArrayList
不是数组,它是一个列表
)请包括。好的,谢谢,将修改它不是我的代码…?但是它不工作