String[] i = { "商纣", "杨戬", "夏桀", "褒姒", "白起", "嬴政", "韩信", "赵云", "妲己", "张良", "关羽", "张飞" };
随机匹配为两组数组
每一组的字符串都是在i这个数组了随机抽取,而且不重复,有好的方法实现吗
ps:别吐槽上面的名字

解决方案 »

  1.   

    遍历String数组,装在List集合,使用Collections.shuffle(list)方法打乱数组,平均分为两组即可
      

  2.   

    LS正解
    public static void main(String[] args) {
    List<String> strList = Arrays.asList(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" });
    Collections.shuffle(strList);
    String[] strs1 = new String[strList.size() / 2], strs2 = new String[strList.size() / 2];
    for (int i = 0; i < strs1.length; i++) {
    strs1[i] = strList.get(i);
    strs2[i] = strList.get(i + strs1.length);
    }
    }
      

  3.   

    String[] name={"a","b","c","d","e","f"};
    int mid=name.length/2;
    String[] a=new String[mid];
    String[] b=new String[mid];
    String tmp=null;
    int j=0;
    for(int i=name.length;i>mid;i--){
    int p=(int) (Math.random()*i);
    a[j++]=name[p];
    tmp=name[i-1];
    name[i-1]=name[p];
    name[p]=tmp;
    }
    int k=0;
    for(int i=mid;i>0;i--){
    int p=(int) (Math.random()*i);
    b[k++]=name[p];
    tmp=name[i-1];
    name[i-1]=name[p];
    name[p]=tmp;
    }
    for(String xString:a){
    System.out.println(xString);
    }
    for(String xString:b){
    System.out.println(xString);
    }