Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在满足特定条件时交换arraylist中的元素_Java_Arrays_Sorting_Arraylist - Fatal编程技术网

Java 在满足特定条件时交换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个元素 然后数组应按其内部的从最小值到最大值排序。 之后,

我有一个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个元素

然后数组应按其内部的从最小值到最大值排序。 之后,将零值作为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
不是数组,它是一个
列表
)请包括。好的,谢谢,将修改它不是我的代码…?但是它不工作