文档章节

JAVA基础之集合

克温s
 克温s
发布于 2015/11/19 11:29
字数 621
阅读 15
收藏 0

与现代的数据结构类库的常见情况一样,Java集合类库也将接口与实现分离。

1,队列(FIFO先进先出),采用循环数组、链表两种方式实现,循环数组效率高,但是一个有界数组,如果对象数量没有上限,建议选择链表;

2,集合类的基本接口是Collection接口

3,iterator方法,用于实现了Iterator接口的对象,Java SE5.0后,采用了for each循环这种更加简练的方式;for each循环可以与实现了Iterator接口的对象一起工作;

for(String element: c){
    do something
}

4,for each扩展了Iterator接口,标准库的任何集合都可以用for each循环;ArrayList会按顺序循环,下标从0开始;HashSet集合会按照某种次序随机循环

5,数组与动态的ArrayList类,删除一个中间元素要付出很大代价,原因是删除元素后后面的元素会向前端移动;增加一个中间元素也是如此;

6,Java中的链表都是双向链表,LinkedList,其中listIterator可以向前或向后遍历链表

List<String> staff = new LinkedList<String>();
staff.add("Amy");
staff.add("Bob");
staff.add("Carl");
ListIterator<String> iter = staff.listIterator();
iter.previous();
iter.next();

7,链表不支持随机访问,如果要查看第N个元素,需要越过N-1个元素。下面这种方式访问效率丰常低。

List<String> staff = new LinkedList<String>();
staff.get(0);

8,ArrayList,LinkedList都是List接口的实现类

9,散列表HashTable,可以快速的查找所需对象;

Set set = new HashSet();//无序
SortedSet set = new TreeSet();//有序

10,

    1)集合类有两个基本接口:Collection和Map;

    2)List是有序集合接口;向List某个位置增加元素时,可以使用ArrayList数组或LinkedList链表;

    3)RandomAcess是空接口(标记接口),instanceof来判断是否支持高效随机访问;

    4)遗留容器类,在Collection之前就已经存在:Vector,Stack,HashTable,Properties。

11,

List<String> list = Collections.nCopies(100, "test");//创建100个字符串List
List<String> list = Arrays.asList("a", "b", "c");
String[] values = {"a", "b", "c"};
HashSet<String> staffHashSet = new HashSet<String>(Arrays.asList(values));

12,增加,删除数组的操作较多,采用LinkedList(随机访问效率低,基本采用迭代的方式访问链表),如果随机访问较多,采用ArrayList(增加,删除操作会移动后续数组,效率低下);

13,二分法查找,排序-折半查找;实现了RandomAccess接口;如果没实现采用线性查找;


© 著作权归作者所有

共有 人打赏支持
克温s
粉丝 2
博文 52
码字总数 19221
作品 0
东城
项目经理
私信 提问
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
Java面试无非也就这几个知识点,大家是否都掌握了

Java语言的关键点 掌握静态方法和属性 重视接口 学好集合框架 例外捕捉 多线程需要理解机理(多线程原理和多线程安全) 了解网络编程 不需要精通,掌握以下知识点,面试基本没有问题。 这里没有...

土豆宝
2016/08/22
9.4K
37
Java程序设计经典300例

《Java程序设计经典300例》共分为3篇。 第1篇 基础篇(第1~5章)本篇主要内容包括:Java语言基础、流程控制、数组、字符串和面向对象编程。通过本篇的学习,读者可以掌握Java开发环境的配置...

请叫我院长
2013/12/03
402
0
给Java新手的一些建议——Java知识点归纳(Java基础部分)

  写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,...

Java工程师-10
2017/05/24
509
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring学习记录

Java类定义配置 @Configuration //标记为配置类@ComponentScan //标记为扫描当前包及子包所有标记为@Component的类@ComponentScan(basePackageClasses = {接口.class,...}) //标记为扫描当...

CHONGCHEN
今天
1
0
如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
今天
3
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
4
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
4
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部