Java List: 列表是什么数据类型,怎么用?

偶然发现容器类的结构在很多代码中越用越多。故,有意识开始整理。方法上觉得:用Java来了解和运用。然后用C++来实现和掌握最为便捷有效。

1 List array vector set 都有些相似的类型,区别呢?

/ list是链表;链接一个个,比set允许重复。比数组来说有同样类似查找功能。比起vector 应用要灵活许多,允许不同方式索引。注意1 其查找操作 线性地,比较耗时;注意2 其嵌套List后,那些equal等操作以及依赖equal的contains等操作可能会不好使了。

2 用法之前分清楚java 的两种list实现类型?

列表实现有两种,ArrayList 和 LinkedList; 比较像C里数组(因为源头上C是更早期的基础语言,所以常用于比较,但不意味着你需要先学好C再学Java)的为ArrayList,因为是成块分配的内存,故长于查改操作,短于增加、删除操作; 比较像C里Link链表的是LinkedList,因为是索引分配,实际内存中存储元素是分散的,所以优劣正好相反。
故,虽然查找、修改、增加和删除都是List需要的操作,但是看业务类型,查找频繁而增删不频繁的(如银行卡号、用户号码)用ArrayList,而增加删除频繁、查改不频繁的(如银行账户金额、库存量等)用LinkedList;

3 用法: 两种实现仅仅是新建略有差别,其它增删改查在编程上无区别

操作Code
新建:List fruit = new ArrayList<>();
newLinkedList<>();
fruit.add(“Apple”);
fruit.add(“Pear”);
fruit.remove(0); // 按照索引删、或者按照内容删除;
fruit.remove(“Apple”);
fruit.set(1,”Banana”);
fruit.contains(“Pear”);
Fruit.containsAll(fruit2); // Listfruit2 = new ArrayList<>(); fruit2.add(“Banana”); fruit2.add(“Apple”);

##4 常用技巧:链表遍历(三种,超级for,for size遍历 以及 迭代器方法)
方法一: 超级for循环遍历

for(Object attribute : list) {
 System.out.println(attribute);

方法二:
for –size 遍历

for(int i = 0 ; i < list.size() ; i++) {  system.out.println(list.get(i));
}

方法三:
用迭代器迭代

Iterator it = list.iterator();
while(it.hasNext()) {
  System.ou.println(it.next);
}

总结

简单的List介绍完毕,实用而并不难。可以作为容器类基础。承接vector和stack 矢量和栈稍微复杂些,进阶的有按序的Linked或hash等等比较算法,加速的。复杂结构的后面还有字典Map(包括java常用而很好用的hashmap,treeMap)等。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐