2008-10-10 30 views
19

Aşağıdaki gibi bir Java dizim var:Hız içinde bir diziye erişmenin en iyi yolu nedir?

String[] arr = new String[] {"123","doc","projectReport.doc"}; 

Benim düşünceme göre, doğal olarak erişim yolu:

 #set($att_id = $arr[0]) 
#set($att_type = $arr[1]) 
#set($att_name = $arr[2]) 

Fakat bu işe yaramıyor. Bu geçici çözümle geldim. Ama bu kadar kolay bir görev için biraz fazla kod.

#set($counter = 0) 
#foreach($el in $arr) 
    #if($counter==0) 
     #set($att_id = $el) 
    #elseif($counter==1) 
     #set($att_type = $el) 
    #elseif($counter==2) 
     #set($att_name = $el) 
    #end 
    #set($counter = $counter + 1) 
#end 

Başka hiç yolu var mı?

cevap

8

Diziyi List ürününü Arrays.asList(T... a) kullanarak paketleyebilirsiniz. Yeni Liste nesnesi, orijinal dizi tarafından yedeklenir, böylece bir kopyayı boşa harcamaz. Yeni Listede yapılan değişiklikler bile diziye geri yayılacaktır.

Nesnelerinizi Hızda almak için $list.get(int index)'u kullanabilirsiniz.

Diziden yalnızca bir veya iki nesne almanız gerekiyorsa, bir diziden öğe almak için Array.get(Object array, int index) 'u da kullanabilirsiniz. Yaklaşan Velocity 1.6'nın diziler için doğrudan desteğe sahip olduğunu bilmek isteyebilirsiniz; ancak

1

Brian's answer gerçekten doğrudur; Daha fazla bilgi için Velocity documentation'a bakın.

+1

Bu doğru üzerinde yanıtlandı Umut. 1.6-beta1 ve sonraki sürümlerde, dizi nesnelerinizde ArrayList yöntemlerinin çoğunu çağırabilirsiniz. Örneğin. $ array.get (0) $ array.set (0, 'foo') –

21

Velocity 1.6'yı kullanabilirsiniz: $array adlı bir dizi için $array.get($index) yapabilirsiniz.

Gelecek Hız 1.7'de, bir $array[$index] ($list[$index] ve $map[$key]) yapabilecek.

0

Hız-tools.jar dosyasından ListTool kullanarak bitti. Bir dizinin öğelerine erişme ve aynı zamanda boyutlarını alma yöntemleri vardır.

0

Kendi sayacınızı oluşturmak zorunda kalmamanız için 1 değeriyle başlayan örtülü bir sayaç $ velocityCount var. Bence

2
String[] arr = new String[] {"123", "doc", "projectReport.doc"}; 

erişime doğal bir yol olacağını: $att_id = $arr[0] gibi diziden değerini almak için doğrudan bir yol yoktur çünkü

#set($att_id = $arr[0]) 
#set($att_type = $arr[1]) 
#set($att_name = $arr[2]) 

bunun değeri $array.get("arr", 1) kullanarak almak olabilir hız.
o :) çalışır

0

Ben aynı soruyu vardır ve başka bir iş parçacığı

#set ($Page = $additionalParams.get('Page')) 
#set ($Pages = []) 
#if ($Page != $null && $Page != "") 
    #foreach($i in $Page.split(";")) 
     $Pages.add($i) 
    #end 
#end 

Array indexing in Confluence/Velocity templates

+0

Bu herkes cevap verebilir mi? http://stackoverflow.com/questions/31116553/how-to-append-hash-tables-in-velocity- şablon –

İlgili konular