Java集合

Posted 木子宣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合相关的知识,希望对你有一定的参考价值。

1、Collection接口

  Collection接口是集合中单值保存的最大父接口(每次向集合中保存一个对象),其方法如下:

 

No

方法

类型

描述

1

Public Boolean add(E e)

普通

向集合里保存数据

2

addAll(Collection<? Extends E> c)

普通

追加一个集合

3

Public void clear()

普通

清空集合

4

Public Boolean contains(Object o)

普通

判断是否包含有指定的内容,需要equals支持

5

Public Boolean isEmpty()

普通

判断集合是否为空

6

Public Boolean remove(Object o)

普通

删除对象,需要equals支持

7

Public int size()

普通

获取集合中元素个数

8

Public Object[] toArray()

普通

将集合变为数组保存

9

Public Iterator <E > iterator()

普通

实例化Iterator接口

在实际使用一般不会直接使用Collection接口,而是使用子接口:List(允许重复)、Set(不允许重复)

2、List接口

  List是Collection中最常用的接口,其数据的保存顺序就是数据的添加顺序,并且可以保存重复的元素,其在Collection的基础上还有一些常用的方法:

No

方法

类型

描述

1

Public E get(int index)

普通

获得索引编号的内容

2

Public E set(int index, E element)

普通

修改指定索引号编号的内容

3

Public ListIterator<E> listIterator()

普通

实例化ListIterator

若使用List接口,一般是使用其子接口ArrayList子类

2.1 ArrayList

在集合中保存数据:

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

public class ListDemo {
    public static void main(String[] args) throws Exception{
        List<String> all = new ArrayList<String>(); //设置泛型,保证集合中所有的数据类型都一样
        System.out.println("长度:" + all.size() + ",是否为空:" + all.isEmpty());
        all.add("Hello");
        all.add("Hello");
        all.add("World");
        System.out.println("长度:" + all.size() + "是否为空:" + all.isEmpty());
        System.out.println(all); //输出所有元素,以列表的形式表现
        //size方法可以获取集合元素个数
        for (int x= 0;x<all.size();x++){   //get方法可以根据索引取得数据
            String str = all.get(x);  //取得数据
            System.out.println(str);
        }
    }
}

  在集合中保存对象

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

class Book{
    private String title;
    private Double price;

    public Book(String title, Double price) {
        this.title = title;
        this.price = price;
    }
    public boolean equals(Object object){
        if (this == object)
            return true;
        if (object == null)
            return false;
        if (!(object instanceof Book))
            return false;
        Book book = (Book) object;
        if (this.title.equals(book.title) && this.price == book.price){
            return true;
        }
        return false;
    }
    public String toString(){
        return "书名:" + this.title + ",价格:" + this.price + "
";
    }
}
public class ListDemo {
    public static void main(String[] args) throws Exception{
        List<Book> all = new ArrayList<Book>();
        all.add(new Book("Java",80.0));
        all.add(new Book("python",99.9));
        all.add(new Book("C++",60.5));
        System.out.println(all);
        all.remove(new Book("Java",80.0));
        System.out.println(all);
        }
    }
}  

2.2 Vector

  Vector与ArrayList不同之处在于Vecrot在线程中使用时数据更加安全,采用同步处理,其使用方法与ArrayList类似

 

3、Set接口

  Set接口是Collection接口下的另一个接口,与List不同的是Set接口只是简单继承了Collection接口,没有进行扩充,也没有get方法,并且不能保存重复元素,其共有HashSet和TreeSet两个子类

 

3.1 HashSet

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

public class HashSetDemo {
    public static void main(String[] args) {
        Set<String> all = new HashSet<String>();
        all.add("Good");
        all.add("Hello");
        all.add("world");
        all.add("Hello");
        System.out.println(all);
    }
}

输出结果:

[world, Hello, Good]

 可以看出HashSet中是不能保存重复元素,且保存的元素是无序存储,与输入顺序没有关联 

 3.2 TreeSet

import java.util.Set;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) throws Exception{
        Set<String> all = new TreeSet<String>();
        all.add("X");
        all.add("B");
        all.add("A");
        all.add("B");
        System.out.println(all);
    }
}

 

输出结果:

[A, B, X]

  可以看出TreSet和HashSet一样是不能保存重复元素,但是TreeSet中存储的元素是有序的,与输入顺序相关的

 

 

 

 

 

 

 

 

以上是关于Java集合的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

Java方法

金蝶handler中 collection 代码片段理解

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]