String[] sort = { "1","4","6","2","3",'5'};
我想把数组里的3插到4后面
最后结果是 1,4,3,6,2,5
我想把数组里的3插到4后面
最后结果是 1,4,3,6,2,5
解决方案 »
- 求助:正则表达式的请进帮忙写下
- DORADO checkbox问题求解
- 新手,提问!
- 问个送分问题
- 我用的是Struts ActionForm 通过 enctype="multipart/form-data" 上传文件 ,但可能是页面过大,到ActionForm就结束。
- Access Driver for JDBC 的配置问题,急救!!
- 如何在java程序中获取Weblogic服务器的系统信息
- struts里---怎么在jsp里面取得bean得resultset
- 急,急,急,请各位大侠帮我看看,这个程序到底错在哪里哦~~
- 求请教tomcat为什么不能调用org.apache.commons.codec.binary.Base64
- 【牛人我等你】JAVA如何实现名字过长部分用省略号显示?
- 当执行obj=null时,内存里发生了什么
1.循环数组中的每个元素,赋值给变量 temp
2.if tmep equals 4
3.如果true,就将4后面的每个数字向后移一位,将3insert到4的后面
4.如果false,就继续循环。
基本思路
1.利用JDK已经提示的类.
//将数组的数据copy到list
List<String> list = new ArrayList<String>();
for(int i = 0; i < sort.length ; i ++){
list.add(sort[i]);
}
int fourIndex = list.indexOf("4");
int threeIndex = list.indexOf("3");
List<String> subList = list.subList(0,fourIndex+1);
List<String> subList2 = list.subList(fourIndex+1,list.size());
if(threeIndex< fourIndex ){
subList.add("3");
subList.remove(threeIndex);
}else{
subList.add("3");
subList2.remove(subList2.indexOf("3"));
}
for(int i =0 ; i < subList2.size();i++){
subList.add(subList2.get(i);
}
return subList.toArray();第二种方法列就是用数组来做,思路跟用list来实现一样的.
第三种方法,由于是String[],我们就可用一个特别一点的方法
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < sort.length; i ++){
sb.append(sort[i]);
}
String temp = sb.toString();
int indexFor3 = temp.indexOf("3");
int indexFor4 = temp.indexOf("4");
sb = new StringBuilder();
if(indexFor3 < indexFor4){
sb.append(temp.subString(0,indexFor3);
sb.append(temp.subString(indexFor3+1,indexFor4+1);
sb.append("3");
sb.append(temp.subString(indexFor4+1),temp.subString(temp.length());
}else{
//3在4的后面,参照上面的逻辑自己写了..
}
temp = sb.toString();
//再把temp截取成数组里的格式即单个字符的子串,加入一个数组,返回即可..