随机获得数组String s[] = {"gequ1","gequ2","gequ3","gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项,怎么来实现

解决方案 »

  1.   

    ArrayList<String> al=Arrays.asList(s)
    Collections.shuffle(al);al中的的就随机的了.
      

  2.   

    写个比较简单的!
    List<String> list = new ArrayList<String>();
    java.util.Random random = new java.util.Random();
    for(int i=0;i<s.length;i++){
    Stirng temp =s[random.nextInt(s.length)];
    if(!list.contains(temp)){
    list.add(temp);
    }
    }
    然后把list分别赋值就可以了
      

  3.   

    自己写一个也好办:boolean[] flag=new boolean[s.length()];
    Random r=new Random();
    for(i=0;i<s.length();){
       int index=r.nextInt(4);
       if(!flag[index]){
          btn[i].setText(s[index]);// 假设你的按钮都放在一个btn数组中了.
          flag[index]=true;
          i++;
        }
    }
      

  4.   

    再来一个:Random r=new Random();
    String temp=null;
    for(int i=s.length()-1;i>=0;i++){
        int t=r.nextInt(i);
        temp=s[t];
        btn[i].setText(temp);
        s[t]=s[i];
        s[i]=temp;
    }
      

  5.   

    从list里面随机取3个元素重新放到一个List里怎么写?
      

  6.   

    Random  r = new Random();   
    int i1 = r.Next(4);
    //产生一到四的随机数
      

  7.   

    String s[] = {"gequ1","gequ2","gequ3","gequ4"};
    List<string> AList = new List<string>();while(true)
    {
       int a = new Random(); //忘了Java里面怎么写了,就是得到一个随机数
       int ayu = a%4;       //取余数 
       if(!AList.contain(s[ayu]))//判断得到随即顺序的数组是否已经含有
       {
          AList.add(s[ayu]);
       }   if(AList.Lenth == 4)
       {
          break;
       }
    }取3个元素 只要把"AList.Lenth == 4" 改成 "AList.Lenth == 3"
      

  8.   

    可不可以从标签取出的list,赋值给java代码,然后再让其顺序打乱取前几个元素重新放到新List里面? 
    <p:assetsInFolder 用${songs.name}可以获得歌曲的名字,type="3" var="songs" folder="${myLists[1]}"/> 
    songs是一个对象List,我想把这个List用java代码处理一下,让它重新排序,把歌曲的名字重新放到一个新list里面 现在关键是怎么把标签${songs}的值再转化为java代码?
      

  9.   

    首先你这个所谓的${songs}应该是从java代码得到的,为什么不能得到以前就在java代码里随机处理(打乱顺序)一下,再扔到页面作显示呢?先说一句多余的话:如果是想把页面的列表拿到java代码中,一般会采取的到数组,java中循环得到的方式。
    话不多说(这废话就不少了),随机处理代码如下,主要思路是ArrayList(有顺序)配合HashSet(值不可重复)实现,楼主仅做参考: String[] s = {"gequ1","gequ2","gequ3","gequ4"};
    int length = 3;
    List<String> sList = new ArrayList<String>();
    if(s != null) {
    if(s.length > length) {
    Set<Integer> hs = new HashSet<Integer>();
    Random r = new Random();
    int random = 0;
    while(hs.size() < length) {
    random = r.nextInt(s.length);
    hs.add(random);
    }
    Iterator<Integer> it = hs.iterator();
    while(it.hasNext()) {
    sList.add(s[it.next()]);
    }
    } else {
    sList = Arrays.asList(s);
    Collections.shuffle(sList); 
    }
    }
    for(String str : sList) {
    System.out.println(str);
    }
      

  10.   

    再补充一句,想随机拿几个,只需修改length变量即可。
      

  11.   

    我的建议是使用hashSet,因为,haseSet存放的是散列集,也就是不重复的元素。
      

  12.   


    这个不错。ArrayList 也行