JavaA2Z

KAB-studio > プログラミング > JavaA2Z > LinkedListとは

LinkedList

日本語 連結一覧
英語 linked list
ふりがな りんくとりすと
フリガナ リンクトリスト

解説

J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名java.util.LinkedList。
可変長配列を実現するクラス。add()メソッドで追加でき、get()メソッドで取得する。
コレクションのひとつ。ArrayListクラスとほぼ同じ機能を持ち、普通に使用している分にはほとんど変わらない。
 
ArrayListクラスとの違いは、LinkedListクラスは「双方向」である、という点である。
ArrayListクラス配列のように先頭から並べられている。つまり「先頭」が明確に決められている。
対して、LinkedListクラスは先頭は一時的に決められるものである。
 
LinkedListクラスは「Linked」の名前が示すとおり、各要素が数珠繋ぎに継なげられている。配列ArrayListクラスはメモリ上に並べられているが、LinkedListクラスは並べられておらず、それぞれの要素がリンクしているだけなのである。
そのため、たとえば要素の先頭への追加は、単に要素を追加し、これまで先頭だった要素からリンクを張ればよいだけである。また、中央の要素を削除する場合にも、要素を削除して前後の要素のリンクを継なぎ換えるだけで済む。
同様のことをArrayListクラスうと、要素をずらすという処理が必要になる。つまり、LinkedListクラス要素の終端以外への追加や終端以外の削除を頻繁にう場合にArrayListクラスよりも処理時間が短くて済むというメリットがあるのである。
ただし、LinkedListクラス要素を取得する場合、インデックスナンバーから直接取得することはできず、先頭に当たる要素からリンクをたどって数えていき取得することになる。そのため、データの取得はArrayListクラスよりも遅い。
 
以上のように、LinkedListクラスは、ArrayListクラスに比べて取得に関しては遅いが挿入に関しては早いことになる。
以上のメリットとデメリットを考えてどちらを選択するか考えた方がいいだろう。
ただし、ArrayListクラスでも、挿入時の「要素をずらす」という処理は、単に参照値をコピーするというだけなのでそれほど負担は少ない。ほとんどの場合にはArrayListクラスで間に合うだろう。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.LinkedList;

public class Sample
{
    public static void main( String[] args )
    {
        // LinkedListクラスを作ります。
        LinkedList linkedList = new LinkedList();
        // 頭に追加していきます。
        linkedList.add( 0, new Integer( 100 ) );
        linkedList.add( 0, new Integer( 200 ) );
        linkedList.add( 0, new Integer( 300 ) );

        // 先頭から1つずつ出力します。
        forint iF1 = 0; iF1 < linkedList.size(); ++iF1 )
        {
            System.out.println( linkedList.get( iF1 ) );
        }
        // 300
        // 200
        // 100
    }
}
// Sample.java
import java.util.LinkedList;

public class Sample
{
    public static void main( String[] args )
    {
        // LinkedListクラスを作ります。
        LinkedList linkedList = new LinkedList();
        // 頭に追加していきます。
        linkedList.add( 0, new Integer( 100 ) );
        linkedList.add( 0, new Integer( 200 ) );
        linkedList.add( 0, new Integer( 300 ) );

        // 先頭から1つずつ出力します。
        for( int iF1 = 0; iF1 < linkedList.size(); ++iF1 )
        {
            System.out.println( linkedList.get( iF1 ) );
        }
        // 300
        // 200
        // 100
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/06
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。