• java 多个设备,锁定先后顺序


    场景图:

    4台android设备需要被锁定顺序,下次的时候按顺序socket推送数据到这4台不同的内容。当有新的一台机器加入时,如上图的E,则插入到原位置为C的地方。具体代码如下:

    public static ArrayList<DeviceLoginEntity> setDeviceOrder(ArrayList<DeviceLoginEntity> devices,String orderStr)
        {
            if(StringUtil.isNullorEmpty(orderStr) || devices == null || devices.size() <= 0)
            {
                Log.v("DeviceUtil", "if(StringUtil.isNullorEmpty(orderStr) || devices == null || devices.size() > 0)直接返回devices");
                return devices;
            }
            else
            {
                Log.v("setDeviceOrder", "orderStr="+orderStr);
                String[] orderStrArr = orderStr.split("\|");
                //优先将devices中存在的,
                for(int i=0;i<orderStrArr.length;i++)
                {
                    for(int j=0;j<devices.size();j++)
                    {
                        if(orderStrArr[i].equals(devices.get(j).android_id))
                        {
                            devices.get(j).sn = i;
                        }
                    }
                }
                //将里面涉及到devices.get(j).sn=默认值100的情况设置为不在{1,2,3,4}里面的情况
                int flag = -1;
                for(int i=0;i<devices.size();i++)
                {
                    int j = 0;
                    for(j=0;j<devices.size();j++)
                    {
                        if(devices.get(j).sn == i)
                        {break;}
                    }
                    if(j == devices.size())  //说明没有找到
                    {
                        flag = i;
                        break;
                    }
                }
                for(int i=0;i<devices.size();i++)
                {
                    if(devices.get(i).sn == 100 && flag !=-1)
                    {
                        //那么则将该sn置为devices.get(i).sn不存在的数字
                        devices.get(i).sn = flag;
                    }
                }
                //再将devices的sn进行排序,越小越在前面
                Comparator<DeviceLoginEntity> comparator = new Comparator<DeviceLoginEntity>(){  
                        public int compare(DeviceLoginEntity s1, DeviceLoginEntity s2) {
                            if(s1.sn < s2.sn){
                                return -1;
                            }  
                            else
                                return 1;
                        }  
                    };  
                Collections.sort(devices, comparator);//按照属性sn排序,从小到大
    //            for(DeviceLoginEntity en:devices)
    //            {
    //                Log.e("setDeviceOrder", "DeviceLoginEntity="+en.android_id+";sn="+en.sn);
    //            }
                return devices;
            }
        }
  • 相关阅读:
    ACM: HDU 2544 最短路-Dijkstra算法
    ACM: HDU 1874 畅通工程续-Dijkstra算法
    ACM: SGU 101 Domino- 欧拉回路-并查集
    ACM: HDU 1285 确定比赛名次
    ACM: hdu 2647 Reward -拓扑排序
    ACM: hdu 1811 Rank of Tetris
    ACM: poj 1094 Sorting It All Out
    ACM: hihicoder #1174 : 拓扑排序·一 STL- queue
    ACM: CodeForces 140A New Year Table-数学几何
    POJ 3122 Pie 二分枚举
  • 原文地址:https://www.cnblogs.com/feijian/p/5048955.html
Copyright © 2020-2023  润新知