❶ C#中ArrayList類定義的數組 如何訪問數組里的元素
1. 需強制轉換成 你想要的類型
2. 示例代碼如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Collections;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
陵激ArrayListlst=newArrayList(){2,3,4,5};
//訪問其元素值,強制轉換
for(inti=0;i<lst.Count;i++)
寬汪告{
Console.WriteLine((int)lst[i]);
慎明}
Console.Read();
}
}
}
3. 運行結果如下:
❷ java中Arraylist可不可以返回下標相對應下位置的數據類型
可以的,用反射clazz遍歷ArrayList,分別獲取clazz對象的類型即可
❸ arraylist和linkedlist的區別 遍歷速度
就是數組和鏈表的區別。
使用iterator遍歷沒有速度區別
根據下標訪問時,ArrayList速度快 直接讀取到該對象,而LinkedList要從第一個對象一個個的向後尋找直到找到該下標的對象
插入與刪除對象時,LinkedList速度快 直接修改鏈接,而ArrayList里在被操作對象之後的所有對象要向前或後移動。
❹ JAVA的arraylist可以用下標直接訪問么那麼我的程序出什麼問題了。。
System.out.println(ve[0]),
你這是取數組下標對應的值,
你的ve定義碼喊的好模鬧是一個ArrayList ve=new ArrayList ();
ArrayList取下標對應友罩的值用:
ve.get(0);
這種才是正確的操作方式,
❺ C# :數組 、ArrayList、List、鏈表、棧、隊列,Hashset的不同Day0816
幾種常見數據結構的使用情景
Array 需要處理的元素數量確定並且需要使用下標時可以考慮,建議使用List<T>
ArrayList 不推薦使用,建議用List<T>
List<T> 需要處理的元素數量不確定時 通常建議使用
LinkedList 鏈表適合元素數量不固定,需要經常增減節點的情況,2端都可以增減 Queue 先進先出的情況
Stack 後進先出的情況
Dictionary 需要鍵值對,快速操作
1.數組
容量固定,類型固定
數組存儲在連續的內存上,順序存儲結構 數組可以直接通過下標訪問。
int[ ] myInt=new int[2,6,3];
創建一個新的數組時將在堆 中分配一塊 連續的內存空間,來盛放數量為size ,類型為所聲明類型的數組元素。如果類型為 值類型, 則將會有 size 個 未封箱 的 該類型的值被創建。如果類 型 為 引用類型 , 則將會有 size個相應類 型的 引用 被創建。
缺點 :由於是連續存儲 ,所以在兩個元素之間 插入新的元素就變得不方便 。聲明一個新的數組時, 必須 指定其長度 ,這就會存在一個潛在的問題, 長度過長時,顯然會浪費內存 ,長度過短的時候,則面 臨這溢出 的風險。 這樣不好!
2.ArrayList(這個不用,不安全)
容量不固定,類型不固定
ArrayList 中插入不同類型的數據是允許的。
ArrayList al = new ArrayList { 11, "string", 10.25 };
因為ArrayList會把所有插入其中的數據當作為 object類型 來處理,用ArrayList處理數據時,很可能會報類型不匹配的錯誤,也就是 ArrayList不是類型安全的 。在存儲或檢索值類型時通常發生 裝箱和取消裝箱操作,帶來很大的性能耗損。
3.List(用這個)
容量不固定,類型固定
在聲明List集合時,我們同時需要為其聲 明List集合內數據的對象類型 。
它的大部分用法都與ArrayList相似,因為List類也繼承了IList介面。最關鍵的區別在於, 確保了 類型安全 。
List<int> my List=new List<int >{11,22,33,66};
4. LinkedList鏈表
鏈表適合 元素數量不固定 ,需要 經常增減節點 的情況。
和數組最大的不同之處就是在於鏈表在內存存儲的排序上可能是不連續的 。
這是由於鏈表是通過 上一個元素指向下一個元素來排列的,不能通過下標來訪問 。
特點就是存儲在 內存的空間不一定連續 ,那麼鏈表相對於數組最大優勢和劣勢就顯而易見了。
1.向鏈表中插入或刪除節點無需調整結構的容量。因為本身不是連續存儲而是靠各對象的指針所決定,所以添加元素和刪除元素都要比數組要有優勢。
2.鏈表適合在需要有序的排序的情境下增加新的元素,這里還拿數組做對比,例如要在數組中間某個位置增加新的元素,則可能需要移動移動很多元素,而對於鏈表而言可能只是若干元素的指向發生變化而已。
3.缺點,由於其在內存空間中不一定是連續排列, 所以訪問時候無法利用下標,而是 必須 從頭結點開始,逐次遍歷下一個節點直到尋找到目標。所以當需要快速訪問對象時,數組無疑更有優勢。
5.Queue<T>
先進先出的線性表。 在Queue這種數據結構中,最先插入在元素將是最先被刪除; 反之最後插入的元素將最後被刪除,
通過使用Enqueue和Dequeue這兩個方法來實現對 Queue的存取。
6.Stack<T>
後進先出的的線性表
默認容量為10。
使用pop和push來操作。
7.Dictionary<K,T>
字典的實現方式就是哈希表的實現方式,只不過 字典是類型安全的 ,也就是說當創建字典時,必須聲明key和item的類。
缺點:以空間換時間,通過更多的內存開銷來滿足我們對速度的追求。在創建字典時,我們可以傳入一個容量值,但實際使用的容量並非該值。而是使用 「不小於該值的最小質數來作為它使用的實際容量,最小是3
因此,我們面臨的情況就是,即便我們新建了一個空的字典,那麼伴隨而來的是2個長度為3的數組。所以當處理的數據不多時,還是慎重使用字典為好,很多情況下使用數組也是可以接受的。
8.Hashset
這個集合類包含不重復項的無序列表
❻ Java 中ArrayList如何比較其中的元素大小
ArrayList是一個集合類型,其用法和數組有一定的相似。
可以使用Collections.sort()方法,此方法就是比較ArrayList集合中各個元素的大棚鋒小,然後進行升鬧局序排列,下面鏈彎晌是代碼示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class T {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("92.8");
list.add("68.9");
list.add("168.61");
list.add("242");
list.add("317");
list.add("105");
Collections.sort(list);// 字元串排序
System.out.println(list.toString()); // [105, 168.61, 242, 317, 68.9, 92.8]
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return new Double((String) o1).compareTo(new Double((String) o2));
}
});
System.out.println(list.toString()); // [68.9, 92.8, 105, 168.61, 242, 317]
}
}
❼ 如果理解C#和Java等中ArrayList可以通過下標訪問
ArrayList是數組集合,可不是鏈表哦。
在C#中,鏈表表示的集合叫做LinkedList<T>,這個才是你學過的不能使用下標訪問的鏈表集碰閉合。
ArrayList是動態的數組集合,它是底層實現是基於數組的,而數組排列是連續的內存空間,所以可以使用下標來計算笑答裂每一個元素的內存位置,從而獲取元素本身。
糾正一點,在C#中,所謂的「下標」舉察叫做「索引器」。是類的一種特殊的方法。
❽ 在c#中ArrayList中元素的下標是什麼意思
假皮物設你有一個arraylist a,裡面存了5個元素,分別為11,22,33,44,55
下標就是索引,索引是從0開始的,這個索引你可以理解為位置。
那麼對於這個例子,11是第一個元素,在燃液液0個位置上,因為索引從0開始。那麼你要訪問或者修改埋局11就用,a[0]訪問11。同理,55是第五個位置,那麼它可以通過a[4]來訪問。
可以看出,索引是自然位置-1。