数据结构在Java中的用法(持续更新...)

  今天做了Medallia公司的Java面试题,发现用惯了C/C++之后对Java感到异常地不适应,特别是对数据结构在Java中如何使用感到十分头疼,于是开始整理并练习Java API里头关于数据结构的使用方法。甲骨文的Java API对每一种数据结构只提供解释但没有提供相关的例子,很不方便,因为大多数时候我们都是通过读例子来学习用法,这也是我学C++觉得最有用的方法。

Vector

  甲骨文API:“The Vector class implements a growable array of objects. Like an array, it contains components that can be accessed using an integer index. However, the size of a Vector can grow or shrink as needed to accommodate adding and removing items after the Vector has been created.”

insert( )

import java.util.*;

public class Insert
{
    public static void main(String[] arguments)
    {
        Vector<Integer> vector = new Vector<Integer>();

        // insert
        for(int i = 0; i < 3; i = i+1)
        {
            vector.add(i); // append at the end
        }
        for(int i = 0; i < vector.size(); i = i+1)
        {
            System.out.println(vector.elementAt(i)); // print 0 1 2
        }
    }
}

remove( )

import java.util.*;

public class Remove
{
    public static void main(String[] arguments)
    {
        Vector<Integer> vector = new Vector<Integer>();

        // insert
        for(int i = 0; i < 6; i = i+1)
        {
            vector.add(i); // append at the end
        }

        // remove
        vector.remove(3);
        for(int i = 0; i < vector.size(); i = i+1)
        {
            System.out.print(vector.elementAt(i)); // print 0 1 2 4 5
        }
        System.out.println();
    }
}

Linked List

  甲骨文API:“Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and permits all elements (including null).”

import java.util.*;

public class Demo
{
    public static void main(String[] arguments)
    {
        LinkedList<Integer> linkedlist = new LinkedList<Integer>();

        linkedlist.add(2); // add 2 to the end of list
        linkedlist.addFirst(1); // add 1 to the head of list
        linkedlist.addLast(4); // add 4 to the end of list
        linkedlist.add(2, 3); // insert 3 at index 2

        for(int i = 0; i < linkedlist.size(); i = i+1)
        {
            System.out.println(linkedlist.get(i));
        }

        System.out.println();

        // remove
        linkedlist.remove( linkedlist.size()-1 );

        for(int i = 0; i < linkedlist.size(); i = i+1)
        {
            System.out.println(linkedlist.get(i)); // print 1 2 3
        }
        System.out.println();

        // search
        System.out.println( linkedlist.indexOf(1) ); // print 0
    }
}

Stack

  甲骨文API:

  The Stack class represents a last-in-first-out (LIFO) stack of objects.

  A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. For example:

Deque<Integer> stack = new ArrayDeque<Integer>();
import java.util.*;

public class Demo
{
    public static void main(String[] arguments)
    {
        Stack stack = new Stack();
        //Deque<Integer> stack = new ArrayDeque<Integer>();

        // insert
        for(int i = 0; i < 3; i = i+1)
        {
            stack.push(i);
        }

        // delete
        while( !stack.isEmpty() )
        {
            System.out.println( stack.pop() ); // print 2 1 0
        }
    }
}

Queue

import java.util.*;

public class Demo
{
    public static void main(String[] arguments)
    {
        Queue<Integer> queue = new LinkedList<Integer>();

        // insert
        for(int i = 0; i < 3; i = i+1)
        {
            queue.add(i);
        }

        // delete
        while( queue.peek() != null )
        {
            System.out.println( queue.poll() ); // print 0 1 2
        }
    }
}

Map

import java.util.*;

public class Demo
{
    public static void main(String[] arguments)
    {
        Map<String, Integer> map = new HashMap<String, Integer>();

        // insert
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);

        Iterator< Map.Entry<String, Integer> > iter = map.entrySet().iterator();
        while( iter.hasNext() )
        {
            Map.Entry<String, Integer> pair = iter.next();
            System.out.println(pair.getKey() + " --> " + pair.getValue());
        }

        // remove
        System.out.println("Now removing " + map.remove("b"));
        iter = map.entrySet().iterator();
        while( iter.hasNext() )
        {
            Map.Entry<String, Integer> pair = iter.next();
            System.out.println(pair.getKey() + " --> " + pair.getValue());
        }

        // search
        System.out.println("The first element is " + map.get("a"));
    }
}
时间: 2024-10-24 21:35:48

数据结构在Java中的用法(持续更新...)的相关文章

JAVA中ArrayList用法

JAVA中ArrayList用法 2011-07-20 15:02:03|  分类: 计算机专业 |  标签:java  arraylist用法  |举报|字号 订阅 Java学习过程中做题时,用到ArrayList,在网上寻找到的学习资料.   摘自:     http://www.cnblogs.com/skylaugh/archive/2006/09/15/505346.html System.Collections.ArrayList类是一个特殊的数组.通过添加和删除元素,就可以动态改变

Java中instanceof用法

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:result = object instanceof class参数:Result:布尔类型.Object:必选项.任意对象表达式.Class:必选项.任意已定义的对象类.说明:如果object 是class 的一个实例,则instanceof 运算符返回true.如果object 不是指定类的一个实例,或

【20160612-20160618】记一周省常中训练(持续更新,欢迎催更)

挖坑,持续更新. #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/wangyurzee7/"); puts("谢谢您的配合"); puts("by wangyurzee7"); return 0; } 20160611下午大概3点不到下火车,打车去宾馆.去学校转了一圈,在宾馆旁边吃了个晚饭,然后赶回去打计蒜之

详解Java中Map用法

Map以按键/数值对的形式存储数据,这里要特别说明( Map.Entry,是Map的内部类,它用来描述Map中的键/值对). Map是一个接口,我们平时多用它的实现类HashMap. 用例如下: public static void main(String args[]) { HashMap hashmap = new HashMap(); hashmap.put("Item0", "Value0"); hashmap.put("Item1",

JAVA中this用法小结

转载自:http://blog.csdn.net/fzfengzhi/article/details/2174406 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它,但是到底“this”该怎么用,却心中无数!很多人一提起它,就说“当前对象”,可到底什么是当前对象,是什么当前对象,他自己也不清楚.现在让大家看一个小例子,给你分享一下JAVA中“this”的用法! /** * @author fengzhi-neusoft * * 本示例为了说明this的三种用

java中this用法

java中this有两种用法:1.代表当前类public class Dog{ private String name; private float age; public setName(String name){ this.name = name; }}这里的this就代表的当前的这个Dog类.this.name可以理解为dog.name,只是理解,不是等于.2.在构造函数中的使用public class Dog{ private String name; private int age;

Java常见小知识点(持续更新...)

1.在什么场景下需要重写hashcode?HashMap的实现原理? 如果我们对equals()方法进行了重写,一般对hashcode进行重写,保证相同的对象返回相同的hash值 HashMap实际上是一个"链表散列"的数据结构,即数组和链表的组合 当我们向HashMap中put值的时候,先计算key的hash值,再根据hash值来计算出这个key在数组中的下标(通过hash与数组长度-1的位与运算,也正是因此,map长度都是2的次方,因为要保证length-1  都是 )如果数组该位

Java中Iterator用法整理

迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.lang.Iterable接口,被Collection继承

java中final用法

1.修饰基础数据成员 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰成常量,不可修改. 2.修饰类或者对象的引用的final 在java中我们无法让对象被修饰为final,只能修饰对象的引用.这意味着即使你写了public final A a = new A();事实上a指向的对象的数据依然可以被修改,不能修改的是a的引用值,即你不能再对a进行重赋值.同样的情况出现在数据组,比如 public final int[] a={1,2,3,4,5},事实上a的数值是可修