2014年8月4日 星期一

java 陣列 不重複的值 (使用ArrayList)

今天在實作  barCode 連續掃描時

發現個問題

須要把 掃描到的 barCode 暫存起來

並且存下來的值不重複

對於一個 php 轉java 的新手

第一個想到就是用陣列

在php中  直接  array_push("value");

最後再   array_unique();   就結束了

不過java 沒這麼簡單

 1.java 沒有直接 array_unique 的 function
 2.java 的 Array 需要先預先宣告 長度

ex String barCode[] = new String(10)



因此目前的想法是

把barCode push 到 陣列  然後  push 進陣列之前

先檢查 陣列是否已經有值了

若有值則不push進去

但是第二個問題: 陣列的大小並不固定

因此google了一下  可以用 ArrayList 來解決實作

ArrayList 是一個可以動態改變大小的陣列

private ArrayList<String> barCodeAry = new ArrayList<String>();

//判斷是否已有此字串
if(!barCodeAry.contains(code)){
 
  //無字串,加入字串
  barCodeAry.add(code);
}

//判斷是否已達掃描上限
if(barCodeAry.size()>=limit){
//返回目前barCode值
}

//重啟Activity時,reset  ArrayList的值

barCodeAry.clear();


目前就是用ArrayList去解決了

另外還發現了其他的作法
例如 用Set 值不重複的特性

參考文章:http://www.ewdna.com/2012/02/javaarray.html

有空需要來惡補一下 collection API  的部份 看起來很好用

包含了
1. collection整個collection架構的最上層介面,介面中義了基本的分類方法。
2set延伸自collection,可用來製作set物件,儲存在set之中的元素不可以重複,而且set中的元素並沒有順序性。
3. list延伸自collection,可用來製作list物件,儲存在lis之中的元素可以重複,而且list中的元素具有順序性。
4. sortedset延伸自set,可用來製作sortedsetset物件。儲存在sotredset之中的元素不可重複,而且sortedset中的元素具有順序性。


參考文章: http://mis.hwai.edu.tw/~kevin/MISProject/JAVAProject/chapter12/c12-1.htm





沒有留言:

張貼留言