重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public static String[] compareArray(String[] strs_a,String[] strs_b){
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于成都定制网页设计,高端网页制作,对边坡防护网等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业网站推广优化,H5建站,响应式网站。
if(strs_a == null) return strs_b;
if(strs_b == null) return strs_a;
if(Arrays.equals(strs_a, strs_b)){
return null;
}
String tempStr = "";
if(strs_a[0].equals(strs_b[0])){
for(int i=0;istrs_a.length;i++){
if(i!=0){
tempStr+=strs_a[i]+",";
}
}
for(int i=0;istrs_b.length;i++){
if(i!=0){
tempStr+=strs_b[i]+",";
}
}
if(tempStr.endsWith(",")) tempStr = tempStr.substring(0, tempStr.length() - 1);
String[] tempArr = tempStr.split(",");
Arrays.sort(tempArr);
tempStr = "";
for(String str:tempArr){
tempStr += str + ",";
}
if(tempStr.endsWith(",")) tempStr = tempStr.substring(0, tempStr.length() - 1);
return new String[]{strs_a[0],tempStr};
}else{
return strs_b;
}
}
public static ListString[] getSortResult(ListString[] list){
ListString[] resultList = new ArrayListString[]();
if(list!=null list.size()0){
for(int i=0;ilist.size();i++){
String[] strs_i = list.get(i);
for(int j=0;i=jjlist.size();j++){
String[] strs_j=list.get(j);
String[] strs_x = compareArray(strs_i, strs_j);
if(strs_x != null){
if(!resultList.contains(strs_x)){
resultList.add(strs_x);
}
}
}
}
}
return resultList;
}
public static void main(String[] args) {
ListString[] list = new ArrayListString[]();
list.add(new String[]{"1","1"});
list.add(new String[]{"1","2"});
list.add(new String[]{"2","1"});
ListString[] rlist = getSortResult(list);
for(String[] items:rlist){
System.out.println();
for(int i=0;iitems.length;i++){
if(i!=0){
System.out.print(items[0] + " " + items[i]);
}
}
}
}
稍微写了下:那几个方法拷到一个类里就可以了,验证如下:
输入:list
list.add(new String[]{"1","1"});
list.add(new String[]{"1","2"});
list.add(new String[]{"2","1"});
输出结果为:
1 1,2
2 1
不知满足你的要求不?不满足接着追问
如果用java的整形数组,可能存在一个问题,就是你传入的数字,不能被数组长度整除,而二维数组要求数组中每个元素长度一致,所以只能把多余的元素抛弃。
按照下面例子,第一次传11个数,至打印出三个数组,换成12个数,就能打印出四个数组了,望采纳。
package test;
import java.util.Arrays;
public class splitArr {
public static int[][] split(int [] arr,int n){
int m = arr.length/n;//返回的数组个数
int[][] result = new int[m][n];
if(arr.length==0||n==0){
return result;
}else{
for(int i = 0;im;i++){
for(int j=0;jn;j++){
result[i][j] = arr[n*i+j];
}
}
}
return result;
}
public static void main(String [] args){
int[] arr = new int []{1,2,3,4,5,6,7,8,9,10,11};
int n= 3;
int[][] result = splitArr.split(arr, n);
for(int i=0;iresult.length;i++){
System.out.println(Arrays.toString(result[i]));
}
}
}
验证结果
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
String[] str = { "112", "2321", "3231", "4443", "5321" };
String[] sub1 = Arrays.copyOf(str, 3);
String[] sub2 = Arrays.copyOfRange(str, 3, str.length);
System.out.println(Arrays.deepToString(sub1));
System.out.println(Arrays.deepToString(sub2));
}
}
运行结果
1.分组后的数组 事先可能不能完全声明出来,因为分组后的数组个数是不固定的,应该声明个全局变量Map map 用于存放这些数组
2.遍历array数组,取出第一批相同值的数值 放进array_one里(成员变量),然后把array_one放进map里面,同理可取出一二批相同值的数值 放进array_two里,然后把array_one放进map里面...
3.遍历map,取出map里的array_one,array_two....array_100....
打字不容易的....给分吧