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;
        }
    }
时间: 2024-08-25 17:15:11

java 多个设备,锁定先后顺序的相关文章

统计 iOS 设备锁定、解锁次数-b

今天下了个软件,可以记录手机解锁的次数和使用时间,当然啦,App 必须在后台运行着.当时比较纳闷的是有什么 API 可以接收设备解锁事件或通知的,Google 了下,还真有哎——我是链接:http://stackoverflow.com/questions/14229955/is-there-a-way-to-check-if-the-ios-device-is-locked-unlocked?noredirect=1&lq=1. 设备锁定的状态 由上面的回答可以知道,设备在锁定.解锁的时候,S

Java访问USB设备

最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到了一个叫做Bus Hound的软件.非常小,但是功能很全,可以看到电脑上所有USB设备的通信信息.如下图所示.这样就可以看到控制信息和读入读出信息.

java反射field和method的顺序问题

最近在有思考到序列化性能优化的问题,关于java反射field和method的顺序问题,这里有详细的讨论http://stackoverflow.com/questions/5001172/java-reflection-getting-fields-and-methods-in-declaration-order javadoc不保证顺序,所以最好的方式仍然是通过自定义注解处理器实现,比如典型的可以借用jackson 的ordered注解JsonPropertyOrder或者objectMap

java继承时候类的运行顺序问题

子类在继承父类后,创建子类对象会首先调用父类的构造函数,先运行父类的构造函数,然后再运行子类的构造函数,例如以下所看到的: class Father{ public Father(){ System.out.println("I am father"); } } public class Child extends Father{ public Child(){ System.out.println("I am child"); } public static vo

java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/53073995 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) ??这篇是数据结构与算法的第3篇,通过前两篇的介绍,对应顺序表和链表已有

Java中常用的查找算法——顺序查找和二分查找

Java中常用的查找算法——顺序查找和二分查找 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg

JAVA中代码段的执行顺序

我记得刚毕业那时候,学习JAVA最怕的就是这儿了,关于这的JAVA题,我一向都做不对.今天终于复习到这了,看了好半天,得赶紧把刚才学习到的那点东西记下来. 一.关于static的代码段执行顺序 执行结果如下: Cup(1) Cup(2) Cups() Cups() Inside main() f(99) 二.关于非static得代码段执行顺序 执行结果如下: Inside main() Mug(1) Mug(2) c1 & c2 initialized Mugs() Mug(1) Mug(2)

java实例化对象时程序运行顺序

当java实例化对象时,首先先进行类加载,类加载的整个过程是将类字节码引入内存,并未类中的static变量赋值.上篇文章已经大概分析了类的加载机制,下面讲一下类的实例化过程. 首先引入示例代码 父类 package test; public class Fu { public int j = 9; public static int i = 10; static{ i = 9; System.out.println("Fu静态代码块"); } { j = 10; System.out.

Java中的查找算法之顺序查找(Sequential Search)

Java中的查找算法之顺序查找(Sequential Search) a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b) 图例说明: 原始数据:int[] a={4,6,2,8,1,9,0,3}; 要查找数字:8 找到数组中存在数据8,返回位置. 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static vo