有一字符串: String test=",8,2,4,7,4,11,5,8,2,7,";
求这个结果: String testend=",4,11,5,8,2,7,";
要求:
        1.去掉test字符串中有重新的数据项
        2.保留最后一个数据重复项
        3.保证字符串的原始顺序.
谁能写个符合这样的java程序方法给我,或提供思路>
实现上面的test到testend的结果
在此,先进行感谢

解决方案 »

  1.   

    so easy
    for exanpleString test=",8,2,4,7,4,11,5,8,2,7,";
    List<String> list = new ArrayList<String>(Arrays.asList(test.split(",", -1)));
    for (int i=list.size()-1; i>0; i--) {
        if ("".equals(list.get(i))) {continue;}
        int j = list.indexOf(list.get(i));
        if (i != j) {
            list.remove(j);
        }
    }
    System.out.println(list);
    StringBuilder buf = new StringBuilder();
    for (int i=0; i<list.size()-1; i++) {
        buf.append(list.get(i)).append(",");
    }
    buf.append(list.get(list.size()-1));
    String testend = buf.toString();
    System.out.println(testend);
      

  2.   

    public static void main(String[] args) throws IOException
    {
    String test = ",8,2,4,7,4,11,5,8,2,7,";
    Map<String, Integer> map = new HashMap<String, Integer>(); String[] chars = test.split(","); for (int i = 0 ; i < chars.length;i++)
    {
    String s = chars[i];
    if (s.length() > 0)
    {
    Integer pre_count = map.get(s) == null ? map.put(s, 1) : map
    .put(s, map.get(s)+1);
    }
    }
    StringBuilder sb = new StringBuilder();
    sb.append(',');
    for(int i = 0; i < chars.length; i++)
    {
    String s = chars[i];
    if (s.length() > 0)
    {
    int count = map.get(s);
    if(count > 1)
    {
    map.put(s, count - 1);
    }
    else if(count == 1)
    {
    sb.append(s).append(',');
    }
    }
    }
    System.out.println(sb);
    }
      

  3.   

    换个方法:String test="8,2,4,7,4,11,5,8,2,7";
    String arr[] = test.split(",");
    Map map = new LinkedHashMap();
    for(int i=0;i<arr.length;i++){
    String tmp = (String)map.get(arr[i]);
    if(!arr[i].equals(tmp)){
    map.put(arr[i], arr[i]);
    }else if(arr[i].equals(tmp)){
    map.remove(arr[i]);
        map.put(arr[i], arr[i]);
    }
    }
    System.out.println(map.size());
    Iterator it = map.keySet().iterator();
    while(it.hasNext()){
    System.out.print(it.next() + ",");
    }
      

  4.   


    public static void main(String[]args){
    String test = new StringBuffer(",8,2,4,7,4,11,5,8,2,7,").reverse().toString();
    String st[] = test.split(",");
    HashSet set = new HashSet();
    String testend = ","; 
    StringBuffer sb = new StringBuffer();
    for(String temp : st){
    if(!temp.equals(",")){
    if(!set.contains(temp)){
    set.add(temp);
    sb.append(temp + ",");
    }
    }
    }
    testend = sb.reverse().toString();
    System.out.println(testend);
    }
    }
      

  5.   


    修改一下 public static void main(String[]args){
    String test = ",8,2,4,7,4,11,5,8,2,7,"; 
    test = new StringBuffer(test).reverse().toString();
    String st[] = test.split(",");
    HashSet set = new HashSet();
    String testend = ","; 
    StringBuffer sb = new StringBuffer();
    for(String temp : st){
    if(!temp.equals(",")){
    if(!set.contains(temp)){
    set.add(temp);
    sb.append(temp + ",");
    }
    }
    }
    testend = sb.reverse().toString();
    System.out.println(testend);
    }
      

  6.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String test=",8,2,4,7,4,11,5,8,2,7,";
    String[] t = test.split(",");
    System.out.println(Arrays.toString(t));
    List<String> l = new ArrayList<String>();
    for(int i=0;i<t.length;i++){
    if(l.contains(t[i])){
    l.remove(t[i]);
    l.add(t[i]);
    }else{
    l.add(t[i]);
    }
    }
    StringBuffer sb = new StringBuffer();
    for(String s : l){
    sb.append(s);
    sb.append(",");
    }
    String testend = sb.toString();
    System.out.println(testend);
    }
      

  7.   

     public static void main(String[]args){
            String test = new StringBuffer(",8,2,4,7,4,11,5,8,2,7,").reverse().toString();
            String st[] = test.split(",");
            HashMap map= new HashMap();
            String testend = ","; 
            StringBuffer sb = new StringBuffer();
            for(String temp : st){
                if(!temp.equals(",")){
                    if(!map.contains(temp)){
                        map.add(temp);
                        sb.append(temp + ",");
                    }
                }
            }
            testend = sb.reverse().toString();
            System.out.println(testend);
        }
    }
      更多的技术问题。欢迎大家到QQ群52734945里讨论
      

  8.   

    map 有contains和add方法?
      

  9.   


    public static void test4() {
    String test=",8,2,4,7,4,11,5,8,2,7,";
    String[] s = test.split(",");
    StringBuffer sb = new StringBuffer();
    for(int i = s.length - 1; i >= 0; i--) {
    if(sb.indexOf(s[i]) == -1) {
    sb.insert(0, "," + s[i]);
    }
    } System.err.println(sb);
    }
      

  10.   


    public static void main(String[] args) {
    String test = ",8,2,4,7,4,11,5,8,2,7,";
    String[] strings = test.split(",");           //将所给字符串根据','来分解成数组
    List<String> list = new ArrayList<String>();  //生成一个有序的集合来存储符合要求的字符串
    StringBuffer sb=new StringBuffer();
    for (String string : strings) {               
    if(list.contains(string)){            //如果包含此字符串,移除已包含的,并添加新的字符串
    list.remove(string);
    list.add(string);
    } else {
    list.add(string);              //不包含,直接添加
    }
    }
    for(String string : list){                     //通过循环拼凑所需字符串
    sb.append(string+",");
    }
    String testend=new String(sb);
    System.out.println(testend);
    }
    上代码
      

  11.   

    public static void test()
    {
    String test=",8,2,4,7,4,11,5,8,2,7,";
    StringBuilder testend = new StringBuilder();
    Stack<String> input = new Stack<String>();
    Stack<String> output = new Stack<String>();
    String[] strs = test.split(",");
    String tmp;
    for(String str : strs)
    {
    if(!"".equals(str))
    input.push(str);
    }
    while(!input.empty())
    {
    tmp = input.pop();
    if(!output.contains(tmp))
    {
       output.push(tmp);
    }
    }

    while(!output.empty())
    {
    testend.append(",");
    testend.append(output.pop());
    }
    testend.append(",");
    System.out.println(testend.toString());
    }
      

  12.   

    用set吧、set里不允许有重复元素的
      

  13.   


    +1
    使用set是最好的饿选择哦。
      

  14.   


    String test = ",8,2,4,7,4,11,5,8,2,7,"; 
            String st[] = test.split(",");
            ArrayList<String> list = new ArrayList<String>();
            for(int i=st.length-1;i>=0;i--){         
                if(!st[i].equals("")&&!list.contains(st[i])){  
                
                 list.add(st[i]);
                }             
            }
            String testend = ""; 
            for(int i=list.size()-1;i>=0;i--){
             testend+=list.get(i);
             if(i>0){
             testend+=",";
             }
            }       
            System.out.println(testend);
      

  15.   

    result = ","+result+",";
    result = res.replaceAll("((?<=,)\\d*(?=,))((?=.*(?<=,)\\1(?=,)))", "$2");
    System.out.println(result.replaceAll(",+", ","));
      

  16.   

    http://www.verycd.com/topics/2838873/下面有将jQuiry的视频,绝对给力,,,虽然我也还没看。
      

  17.   

    用hash应该算最好了吧,时间复杂度为O(n),其他方法都是O(n^2)