近来遇到了点问题,请教大家下,希望给个答案,谢谢。
需求:
有两个对应的数组:A={1,2,3,4,5},A1={a,b,a,a,c}
根据数组A1中的重复原素来取出数组A中对应的元素,并且累加成字符串:1,3,4
根据数组A1中的不重复的元素取出数组A中对应的元素,并且累加成字符串:2,5谢谢。

解决方案 »

  1.   

    两次循环一次循环A1,将其put进Map或add进List, 借助 contains() 记下A1重复元素位置二次循环A,拼字符串
      

  2.   


    import java.util.*;
    public class TwoArray{
        public static String[] get(int[] arr,char chArr[]){
        List list1=new ArrayList(arr.length);
    List list2=new ArrayList(arr.length);
        for(int i=0;i<arr.length;i++){
        list1.add(arr[i]);
    list2.add(chArr[i]);
    }
    Set set1=new HashSet(arr.length);
            Set set2=new HashSet(arr.length);
        StringBuilder sb=new StringBuilder();
    sb.append("[");
        for(int i=0;i<list2.size();i++){
        boolean found=false;
        for(int j=i+1;j<list2.size();j++){
           Character ch1=(Character)(list2.get(i));
       Character ch2=(Character)(list2.get(j));
           if(ch1.equals(ch2)){
          set1.add(list1.get(i));
      set1.add(list1.get(j));
      set2.add(ch1);
      found=true;
    }
    }
          if(found){
        for(Iterator it=set1.iterator();it.hasNext();){
    sb.append(it.next());
    sb.append(",");
    }
        list1.removeAll(set1);
    list2.removeAll(set2);
    set1.clear();
    set2.clear();
    i=-1;
    }
    }
    if(sb.length()>1)sb.deleteCharAt(sb.length()-1);
    sb.append("]");
    String[] result=new String[2];
    result[0]=sb.toString();
    result[1]=list1.toString();
    return result;
    }
        public static void main(String rags[]){
        int[] A={1,2,3,4,5,6};
    char[] A1={'a','b','a','a','c','a'} ;
    String repeate=get(A,A1)[0];
    System.out.println(repeate);
    String noRepeate=get(A,A1)[1];
    System.out.println(noRepeate);
    }
    }
      

  3.   


    public static void main(String[] args)
    {
    tt(new int[]{1,2,3,4,5},new String[]{"a","b","a","a","c"});
    }
    public static void tt(int[] array1,String array2[])
    {
    Set set1=new HashSet();
    Set set2=new HashSet();
    String str1="";
    String str2="";
    //set2中记录重复出现过的元素。
    for(int i=0;i<array2.length;i++)
    {
    if(!set1.add(array2[i]))
    {
    set2.add(array2[i]);
    }
    }
    for(int i=0;i<array1.length;i++)
    {
    if(set2.contains(array2[i]))
    {
    str1+=array1[i];
    }
    else
    {
    str2+=array1[i];
    }
    }
    System.out.println(str1);
    System.out.println(str2);
    }
      

  4.   

    String aa = null;
    char a[] = str1.toCharArray();
    for (int i = 0; i < a.length; i++) {
    aa += (a[i] + ",");
    }
    String ac = aa.substring(4, aa.length() - 1);
    ac.split(",");
    System.out.println(ac);补一段字符串拆分的代码 3楼的contains()方法的使用顶上
      

  5.   

    question:
    what kind of results do u want if two arrays like these: 
    a={1,2,3,4,5} b={a,a,b,b,c}