Java集合类学习笔记

前言:下载Java的API,需要使用接口时,可在API中进行查询。

1、collection接口:可理解为一个动态的对象数组,不同的是集合中对象的内容可以任意扩充。

特点:性能高;易扩展和修改。

常用子类接口:List、Set、Queue。

2、List接口有ArrayList、vector子类,两者的使用方法相同,不同的是ArrayList是异步处理方式,性能高,但是非线程安全;vector同步处理方式,性能低,但是线程安全。在不要求线程安全的时候采用ArrayList子类。

使用实例:

package com.webdashen.list;

import java.util.ArrayList;
import java.util.List;

public class listdemo01 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> lists =null;
lists=new ArrayList<String>();//接口不能实例化,用其子类进行实例化
lists.add("Hello");//集合对象内容任意,且对象可重复
lists.add("Xueshi");
lists.add("Xueshi");
for (int i=0;i<lists.size();i++)
//for (int i=0;i<2;i++)
{
System.out.println(lists.get(i));
}
lists.remove(2);//删除指定位置对象
System.out.println("After Remove-----");
for (int i=0;i<lists.size();i++)
//for (int i=0;i<2;i++)
{
System.out.println(lists.get(i));
}
System.out.println("集合是否为空:"+lists.isEmpty());
System.out.println("Xueshi是否存在:"+lists.indexOf("Xueshi"));
System.out.println("Xue是否存在:"+lists.indexOf("Xue"));//这两条语句可以测试出,集合中对象的存在方式
}
}

结果:

Hello
Xueshi
Xueshi
After Remove-----
Hello
Xueshi
集合是否为空:false
Xueshi是否存在:1
Xue是否存在:-1

3、set,不能加入重复元素,但是可以排序。子类包括HashSet(散列存放),TreeSet(顺序存放)。

实例:

package com.webdashen.list;

import java.util.HashSet;
import java.util.Set;

public class setdemo01 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<String>s=null;
/*s=new TreeSet<String>();
s.add("B");
s.add("A");
s.add("C");
s.add("D");
s.add("E");
s.add("F");
System.out.println(s);*/
s=new HashSet<String>();
s.add("A");
s.add("B");
s.add("C");
s.add("D");
s.add("E");
s.add("F");
System.out.println(s);
}

}

4、Iterator接口:专门的迭代输出接口,将元素进行一个接一个的检查,有内容就取出。

5、Map接口:以键值对形式存储,无序,不允许重复。具体使用时可参见API介绍。

时间: 2024-10-05 17:54:19

Java集合类学习笔记的相关文章

Java集合类学习笔记(Set集合)

Set集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入. HashSet类的特点: 不能保证元素的排列顺序,顺序可能与添加顺序不同,也有可能发生变化. HashSet不是同步的,如果多个线程同时访问并修改一个HashSet时,必须保证其同步. 元素值可以是null. LinkedHashSet类的特点: 是HashSet类的子类,它根据元素的hashCode值来决定元素的存储位置,但同时使用链表维护元素的次

Java集合类学习笔记(各种Map实现类的性能分析)

HashMap和Hashtable的实现机制几乎一样,但由于Hashtable是一个古老的.线程安全的集合,因此HashMap通常比Hashtable要快. TreeMap比HashMap和Hashtable要慢(尤其在插入.删除key-value对时更慢),TreeMap中的key-value总是处于有序状态,无需专门进行排序操作. LinkedHashMap比HashMap慢一点,因为它需要维护链表来保持Map中key-value时的添加顺序. IdentityHashMap采用与HashM

Java集合类学习笔记(Map集合)

Map用于保存具有映射关系的数据,因此Map集合里保存着两组数据,一组用于保存Map的key,一组用于保存key所对应的value. Map的key不允许重复. HashMap和Hashtable都是Map接口的典型实现类,他们的关系类似于ArrayList和Vector的关系. HashMap和Hashtable的区别: Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现. Hashtable不允许使用null作为key和value,HashMap可以使用. Li

Java集合类学习笔记(各种线性表性能分析)

ArrayList.LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表. Queue代表了队列,Deque代表了双端队列. 一般来说,由于数组以一块连续内存区来保存所有的数组元素,所以数组在随机访问时性能最好: 而内部以链表作为底层实现的集合在执行插入.删除操作时有较好的性能. 总体来说,ArrayList的性能比LinkedList性能要好,因此大部分时候都应该考虑ArrayList. 关于使用List集合有如下建议: 如果需要遍历List集合元素,对于ArrayLi

Java集合类学习笔记(List集合)

List集合是指一个元素有序.可重复的集合,集合中每个元素都有其对应的顺序索引. ArrayList和Vector作为List集合的两个典型实现,完全支持List接口的全部功能,并且在用法上几乎完全相同. ArrayList和Vector的显著区别是: ArrayList不是线程安全的,Vector是线程安全的.

java集合类学习笔记之LinkList

1.简述 LinkList的底层其实就是一个双向链表,所谓的链表就是一个LinkList内部静态静态类(Node),对LinkList的所有操作本质上就是通过对LinkList中新建的Node对象 进行关联引用 2.实现 a.构造方法: LinkList一共提供了两种构造方法: /** * Constructs an empty list. */ public LinkedList() { } /** * Constructs a list containing the elements of

java nio学习笔记(一)

位置保留,待用 java nio学习笔记(一),布布扣,bubuko.com

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

java排序学习笔记

前面写了js的排序实现,总得玩玩java的哈. 同样,冒泡.选择.快速(这三个之前实现过也写过文章).堆排序,然后做比较. 主要遇到的难点: - -||想轻松点写个封装计时的逻辑,不想每调用一个排序就要写一个计时代码.想想,还是javascript写起来方便: java的话,我想到的方法是写一个抽象类:抽象出排序方法,实现一个排序计时方法(该方法调用了抽象排序,但在先后排序时加入计时代码[感觉像是aop操作]): 接着所有排序类都继承这个抽象类,并实现排序方法,调用的时候直接调用继承的排序计时方