java集合类整理

LinkedList

优点:插入删除迅速

缺点:不适合随机访问

List<String> staff = new LinkedList<String>();
        staff.add("Amy");
        staff.add("Amy");
        staff.add("bob");
        staff.add("car");
        staff.remove("Amy");// 即使有重复的只只会删掉第一个找到的

冲突

List<String> list = new LinkedList<String>();
        list.add("a");
        list.add("b");
        list.add("d");
        list.add("d");
        ListIterator<String> iter1 = list.listIterator();
        ListIterator<String> iter2 = list.listIterator();
        System.out.println(iter1.next());
        iter1.remove();
        iter2.next();

listIterator的实现在LinkedList->AbstractSequentialList->AbstractList中,看到继承的类AbstractList中实现了List借口,LinkedList也实现了LinkedList接口.这样算冲突了,有点意思

iter1.remove()删除节点了,iter2又要访问,肯定异常了.

ArrayList

优点:随机访问方便,在单线程中使用快速

缺点:插入和删除需要浪费,线程不同步,在多线程上不适合

Vector

优点:多线程同步

HashSet

优点:可以将有重复元素的ArrayList放到HashSet消除重复?

Set<String> words = new HashSet<>();
words.add("a");
words.add("c");
words.add("d");
words.add("e");
words.add("but");
words.add("e");
Iterator<String> iterator = words.iterator();
while (iterator.hasNext())
{
System.out.println(iterator.next());

}
// for (String string : words)
// {
// System.out.println(string);
// }

TreeSet:

优点:有序且过滤相等,保证不重复

package test;

import java.util.Comparator;
import java.util.SortedSet;
import java.util.TreeSet;

public class main
{
    public static class Item
    {
        public Item(int w, int h)
        {
            height = h;
            weight = w;
            // TODO Auto-generated constructor stub
        }

        public int weight;
        int height;
    }

    public static void main(String[] args)
    {
        SortedSet<Item> items = new TreeSet<Item>(new Comparator<Item>()
        {
            public int compare(Item a, Item b)
            {
                return a.height * a.weight - b.height * b.weight;

            }

        });

        items.add(new Item(1, 2));
        items.add(new Item(2, 2));
        items.add(new Item(3, 1));
        items.add(new Item(4, 1));

        for (Item item : items)
        {
            System.out.println(item.height + " and " + item.weight);
        }
    }
    // 结果:
    // 2 and 1 1
    // and 3
    // 2 and 2
    // 还有1格4 1算作重复给扔掉了
}

如果想仅仅用一个有序但是不重复的应该用哪个?

NavigationSet

NavigableSet 扩展 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法。方法 lower、floor、ceiling 和 higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回 null。可以按升序或降序访问和遍历 NavigableSet。descendingSet 方法返回 set 的一个视图,该视图表示的所有关系方法和方向方法都是逆向的。升序操作和视图的性能很可能比降序操作和视图的性能要好。此外,此接口还定义了 pollFirst 和 pollLast 方法,它们返回并移除最小和最大的元素(如果存在),否则返回 null。subSet、headSet 和 tailSet 方法与名称相似的 SortedSet 方法的不同之处在于:可以接受用于描述是否包括(或不包括)下边界和上边界的附加参数。任何 NavigableSet 的 Submap 必须实现 NavigableSet 接口。

时间: 2024-10-14 09:40:26

java集合类整理的相关文章

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep

Java集合类具体解释

假设您喜欢这些文章,欢迎点击此处订阅本Blog 集合类说明及差别 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最主要的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些 Collection同意同样的元素而还有一些不行.一些能排序而

大公司Java集合类面试问题你知道多少?

通过学员面试回来反馈的一些大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重的,作为柠檬学院的专职老师,有责任把这些东西整理一下,让学员也多学习一些,在学习中能找到重要知识点. java.util包中包含了一系列重要的集合类,而对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式. 接口:Collection Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection

Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术? https://blog.csdn.net/column/details/21930.html 里面有包括Java集合类在内的众多Java核心技术系列文章. 以下总结不保证全对,如有错误,还望能够指出,谢谢. 最后,如果想要更好地完成这部分内容的学习,建议大家还是去看一下原文. Colletion,iterator,comparable 一般认为Co

Java集合详解8:Java集合类细节精讲,细节决定成败

本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号[Java技术江湖]的<走进JavaWeb技术世界>其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作

Java集合类: Set、List、Map、Queue使用

目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了. 集合类主要负责保存.盛装其他数据,因此集合类也被称为容

Java 集合类详解

1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等. 发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法.它的一个

摘抄转载前辈们的Java集合类总结

JAVA 集合类介绍和使用    类关系示意图  Iterable(接口)      │      └--Collection (接口)          ├-List(接口)          │ ├-LinkedList  不同步  (构造同步:List list = Collections.synchronizedList(new LinkedList(...));)          │ ├-ArrayList   不同步           │ └-Vector      同步    

针对Java集合类的小总结

Java集合类包位于java.util下,有很多常用的数据结构:数组.链表.队列.栈.哈希表等等.了解不同的集合类的特性在开发过程中是比较重要的,感谢@兰亭风雨的专栏分析,这里我也根据自己的理解做轻度的总结,不再进行分析,因为上面的博客分析已经相当优秀. List接口实现,一般常用的为ArrayList和LinkedList,还有不太常用的Vector,Stack.比如JDK文档声明 Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非Sta