Java代码片段库

1. 获取文件的byte[]一种最简单的方式

public static byte[] getBytesFromFile(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        return Files.readAllBytes(path);
    }

2. 使用Properties类读写properties文件

    public static void getProp() throws Exception{
        Properties properties = new Properties();
        FileInputStream fileInputStream = new FileInputStream("D:\\test\\prop.properties");
        properties.load(fileInputStream);

        System.out.println("name="+properties.getProperty("name"));
    }

    public static void writeProp() throws Exception{
        Properties properties = new Properties();
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\test\\new_prop.properties");
        properties.setProperty("age","24");
        properties.setProperty("name","liyubo");

        properties.store(fileOutputStream,"Copyright (c) Liyubo Test");
    }

3. 线程锁定机制代码片段

Lock lock = new ReentrantLock();  
lock.lock();  
try {   
  // update object state  
}  
finally {  
  lock.unlock();   
}  

4. 读取maven的resource路径下的文件

Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath()

5. 典型的线程池代码

//利用线程池技术模拟手机发送验证码的场景
public class PhoneMsgSender {
    //构建一个线程池
    private static final ExecutorService exeutor = 
        new ThreadPoolExecutor(
        1,
        Runtime.getRuntime().availableProcessors(),
        60,
        TimeUnit.SECONDS,
        new SynchronousQueue(),
        new ThreadFactory(){
            public Thread newThread(Runnable r){
            Thread t = new Thread(r,"PhoneMsgSender");
            t.setDaemon(true);
            return t;
            }
        }, new ThreadPoolExecutor.DiscardPolicy());
    
    public void sendPhoneMsg(final String phoneNumber){
        Runable task = new Runnable(){
            public void run(){
            doSend(phoneNumber);
        }
        };
        
        //提交新任务
        exeutor.submit(task);
    }
    
    //具体执行发送信息任务
    public void doSend(String phoneNumber){
        System.out.println("Sending msg : " + phoneNumber);
        //Todo
        
    }
}

6. 一个含有泛型成员变量的类定义

@Data
public class Response {
    private Integer code;
    private String msg;
    private T data;
}

7. 文件转properties处理

is = new FileInputStream(manager_path + "/conf/pme_manager.properties");
Properties pro = new Properties();
pro.load(is);
pro.getProperty("username_sys")

8.

9. 变长参数实例

public static int add(int ... data){
  int sum = 0;
  for(int x=0,length=data.length;x

10. 获取本机的网络信息,主机,地址等

public static void main( String[] args ) throws UnknownHostException {
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("主机名:"+address.getHostName());
        System.out.println("IP地址:"+address.getHostAddress());
}

11. 接收键盘输入

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  // 创建键盘录入对象
        System.out.println("请输入第1个数:");
        int x = sc.nextInt();
        System.out.println("请输入第2个数:");
        int y = sc.nextInt();

        int sum = x+y;

        System.out.println("计算结果是:"+sum);
    }

12. 修改文件属组

UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
        
        UserPrincipal userPrincipal = lookupService.lookupPrincipalByName("streaming");
        GroupPrincipal group = lookupService.lookupPrincipalByGroupName("universe");

        Files.setAttribute(Paths.get("/home/streaming/testfile"), "posix:group", group, LinkOption.NOFOLLOW_LINKS);
        Files.setAttribute(Paths.get("/home/streaming/testfile"), "posix:owner", userPrincipal, LinkOption.NOFOLLOW_LINKS);

13. Map遍历的效率提升

Map paraMap = new HashMap(); 

for( Entry entry : paraMap.entrySet() ) 

{ 

    String appFieldDefId = entry.getKey(); 

    String[] values = entry.getValue(); 

}

14. 使用System.arraycopy()提升属组复制效率

避免通过循环来迭代给两个属组进行复制操作。

public class IRB { 
     void method () { 
         int[] array1 = new int [100]; 
         for (int i = 0; i < array1.length; i++) { 
             array1 [i] = i; 
         } 

         int[] array2 = new int [100]; 
         System.arraycopy(array1, 0, array2, 0, 100); 
     } 
}

15. 判断集合类等实例的相等

对于基本类型我们用==判断就可以,如果是String类型我们使用equals,这个是很基础的知识了。那么我们怎么判断两个对象是否相等呢?
对于集合类的对象,我们可以遍历对象中的每个数据,逐一判断是否相等,这是简单粗暴的方式。那么如果我们判断两个class是否相等该怎么做呢?答案是用hashcode。

if(obj1.toString().hashCode()==obj2.toString().hashCode())

这里的重点是你比较的对象必须先转成String串,然后比较String串的hashcode。因为直接比较对象的hashcode那是肯定不一样的。

16. Array转ArrayList的正确方法

Arrays.asList()会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类。java.util.Arrays.ArrayList类实现了set(), get(),contains()方法,但是并没有实现增加元素的方法(事实上是可以调用add方法,但是没有具体实现,仅仅抛出UnsupportedOperationException异常),因此它的大小也是固定不变的。为了创建一个真正的java.util.ArrayList,你应该这样做:

ArrayList arrayList = new ArrayList(Arrays.asList(arr));

17. 判断一个数组是否包含某个值

Arrays.asList(arr).contains(targetValue);

18.

你可能感兴趣的:(Java代码片段库)