<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FCollections_Data_Structure%2FCustom_List</id>
		<title>Java/Collections Data Structure/Custom List - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FCollections_Data_Structure%2FCustom_List"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Custom_List&amp;action=history"/>
		<updated>2026-04-19T02:20:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Custom_List&amp;diff=9137&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Custom_List&amp;diff=9137&amp;oldid=prev"/>
				<updated>2010-06-01T07:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:26, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Custom_List&amp;diff=9136&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Collections_Data_Structure/Custom_List&amp;diff=9136&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:49Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A growable array of int values, suitable for use with multiple threads ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2004 David Flanagan.  All rights reserved.&lt;br /&gt;
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.&lt;br /&gt;
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.&lt;br /&gt;
 * You may study, use, and modify it for any non-commercial purpose,&lt;br /&gt;
 * including teaching and use in open-source projects.&lt;br /&gt;
 * You may distribute it non-commercially as long as you retain this notice.&lt;br /&gt;
 * For a commercial use license, or to purchase the book, &lt;br /&gt;
 * please visit http://www.davidflanagan.ru/javaexamples3.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * A growable array of int values, suitable for use with multiple threads.&lt;br /&gt;
 */&lt;br /&gt;
public class ThreadSafeIntList {&lt;br /&gt;
  protected int[] data; // This array holds the integers&lt;br /&gt;
  protected int size; // This is how many it current holds&lt;br /&gt;
  // Static final values are constants. This one is private.&lt;br /&gt;
  private static final int DEFAULT_CAPACITY = 8;&lt;br /&gt;
  // Create a ThreadSafeIntList with a default capacity&lt;br /&gt;
  public ThreadSafeIntList() {&lt;br /&gt;
    // We don&amp;quot;t have to set size to zero because newly created objects&lt;br /&gt;
    // automatically have their fields set to zero, false, and null.&lt;br /&gt;
    data = new int[DEFAULT_CAPACITY]; // Allocate the array&lt;br /&gt;
  }&lt;br /&gt;
  // This constructor returns a copy of an existing ThreadSafeIntList.&lt;br /&gt;
  // Note that it synchronizes its access to the original list.&lt;br /&gt;
  public ThreadSafeIntList(ThreadSafeIntList original) {&lt;br /&gt;
    synchronized (original) {&lt;br /&gt;
      this.data = (int[]) original.data.clone();&lt;br /&gt;
      this.size = original.size;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  // Return the number of ints stored in the list&lt;br /&gt;
  public synchronized int size() {&lt;br /&gt;
    return size;&lt;br /&gt;
  }&lt;br /&gt;
  // Return the int stored at the specified index&lt;br /&gt;
  public synchronized int get(int index) {&lt;br /&gt;
    if (index &amp;lt; 0 || index &amp;gt;= size) // Check that argument is legitimate&lt;br /&gt;
      throw new IndexOutOfBoundsException(String.valueOf(index));&lt;br /&gt;
    return data[index];&lt;br /&gt;
  }&lt;br /&gt;
  // Append a new value to the list, reallocating if necessary&lt;br /&gt;
  public synchronized void add(int value) {&lt;br /&gt;
    if (size == data.length)&lt;br /&gt;
      setCapacity(size * 2); // realloc if necessary&lt;br /&gt;
    data[size++] = value; // add value to list&lt;br /&gt;
  }&lt;br /&gt;
  // Remove all elements from the list&lt;br /&gt;
  public synchronized void clear() {&lt;br /&gt;
    size = 0;&lt;br /&gt;
  }&lt;br /&gt;
  // Copy the contents of the list into a new array and return that array&lt;br /&gt;
  public synchronized int[] toArray() {&lt;br /&gt;
    int[] copy = new int[size];&lt;br /&gt;
    System.arraycopy(data, 0, copy, 0, size);&lt;br /&gt;
    return copy;&lt;br /&gt;
  }&lt;br /&gt;
  // Reallocate the data array to enlarge or shrink it.&lt;br /&gt;
  // Not synchronized because it is always called from synchronized methods.&lt;br /&gt;
  protected void setCapacity(int n) {&lt;br /&gt;
    if (n == data.length)&lt;br /&gt;
      return; // Check size&lt;br /&gt;
    int[] newdata = new int[n]; // Allocate the new array&lt;br /&gt;
    System.arraycopy(data, 0, newdata, 0, size); // Copy data into it&lt;br /&gt;
    data = newdata; // Replace old array&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Another Link list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Link {&lt;br /&gt;
  public int key;&lt;br /&gt;
  public double data; &lt;br /&gt;
  public Link next;&lt;br /&gt;
  public Link(int id, double dd) {&lt;br /&gt;
    key = id;&lt;br /&gt;
    data = dd;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayLink() {&lt;br /&gt;
    System.out.print(&amp;quot;{&amp;quot; + key + &amp;quot;, &amp;quot; + data + &amp;quot;} &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class AnotherLinkList {&lt;br /&gt;
  private Link first;&lt;br /&gt;
  public AnotherLinkList() {&lt;br /&gt;
    first = null;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertFirst(int id, double dd) {&lt;br /&gt;
    Link newLink = new Link(id, dd);&lt;br /&gt;
    newLink.next = first;&lt;br /&gt;
    first = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public Link find(int key) &lt;br /&gt;
  {&lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current.key != key)&lt;br /&gt;
    {&lt;br /&gt;
      if (current.next == null)&lt;br /&gt;
        return null; // didn&amp;quot;t find it&lt;br /&gt;
      else&lt;br /&gt;
        // not end of list,&lt;br /&gt;
        current = current.next; // go to next link&lt;br /&gt;
    }&lt;br /&gt;
    return current; // found it&lt;br /&gt;
  }&lt;br /&gt;
  //   delete link with given key&lt;br /&gt;
  public Link delete(int key) {&lt;br /&gt;
    Link current = first;&lt;br /&gt;
    Link previous = first;&lt;br /&gt;
    while (current.key != key) {&lt;br /&gt;
      if (current.next == null)&lt;br /&gt;
        return null; // didn&amp;quot;t find it&lt;br /&gt;
      else {&lt;br /&gt;
        previous = current; // go to next link&lt;br /&gt;
        current = current.next;&lt;br /&gt;
      }&lt;br /&gt;
    } // found it&lt;br /&gt;
    if (current == first) // if first link,&lt;br /&gt;
      first = first.next; //    change first&lt;br /&gt;
    else&lt;br /&gt;
      // otherwise,&lt;br /&gt;
      previous.next = current.next; //    bypass it&lt;br /&gt;
    return current;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayList() {&lt;br /&gt;
    System.out.print(&amp;quot;List (first to last): &amp;quot;);&lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current != null) &lt;br /&gt;
    {&lt;br /&gt;
      current.displayLink(); &lt;br /&gt;
      current = current.next;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    AnotherLinkList theList = new AnotherLinkList();&lt;br /&gt;
    theList.insertFirst(12, 2.59);&lt;br /&gt;
    theList.insertFirst(24, 4.69);&lt;br /&gt;
    theList.insertFirst(36, 6.79);&lt;br /&gt;
    theList.insertFirst(48, 8.89);&lt;br /&gt;
    theList.displayList();&lt;br /&gt;
    Link f = theList.find(44);&lt;br /&gt;
    if (f != null)&lt;br /&gt;
      System.out.println(&amp;quot;Found link with key &amp;quot; + f.key);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Can&amp;quot;t find link&amp;quot;);&lt;br /&gt;
    Link d = theList.delete(66); &lt;br /&gt;
    if (d != null)&lt;br /&gt;
      System.out.println(&amp;quot;Deleted link with key &amp;quot; + d.key);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Can&amp;quot;t delete link&amp;quot;);&lt;br /&gt;
    theList.displayList();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doubly-linked list with data structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public class DoublyLinkedList {&lt;br /&gt;
  private Link first; &lt;br /&gt;
  private Link last; &lt;br /&gt;
  public DoublyLinkedList() {&lt;br /&gt;
    first = null; &lt;br /&gt;
    last = null;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty(){&lt;br /&gt;
    return first == null;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertFirst(long dd){&lt;br /&gt;
    Link newLink = new Link(dd); &lt;br /&gt;
    if (isEmpty()) &lt;br /&gt;
      last = newLink; &lt;br /&gt;
    else&lt;br /&gt;
      first.previous = newLink; &lt;br /&gt;
    newLink.next = first; &lt;br /&gt;
    first = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public void insertLast(long dd){&lt;br /&gt;
    Link newLink = new Link(dd); &lt;br /&gt;
    if (isEmpty()) &lt;br /&gt;
      first = newLink; &lt;br /&gt;
    else {&lt;br /&gt;
      last.next = newLink; &lt;br /&gt;
      newLink.previous = last; &lt;br /&gt;
    }&lt;br /&gt;
    last = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public Link deleteFirst(){ &lt;br /&gt;
    Link temp = first;&lt;br /&gt;
    if (first.next == null) &lt;br /&gt;
      last = null; &lt;br /&gt;
    else&lt;br /&gt;
      first.next.previous = null;&lt;br /&gt;
    first = first.next; &lt;br /&gt;
    return temp;&lt;br /&gt;
  }&lt;br /&gt;
  public Link deleteLast(){ &lt;br /&gt;
    Link temp = last;&lt;br /&gt;
    if (first.next == null)&lt;br /&gt;
      first = null; &lt;br /&gt;
    else&lt;br /&gt;
      last.previous.next = null;&lt;br /&gt;
    last = last.previous; &lt;br /&gt;
    return temp;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean insertAfter(long key, long dd) { &lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current.dData != key){&lt;br /&gt;
      current = current.next;&lt;br /&gt;
      if (current == null)&lt;br /&gt;
        return false; // cannot find it&lt;br /&gt;
    }&lt;br /&gt;
    Link newLink = new Link(dd); // make new link&lt;br /&gt;
    if (current == last) // if last link,&lt;br /&gt;
    {&lt;br /&gt;
      newLink.next = null; &lt;br /&gt;
      last = newLink; &lt;br /&gt;
    } else // not last link,&lt;br /&gt;
    {&lt;br /&gt;
      newLink.next = current.next; &lt;br /&gt;
      &lt;br /&gt;
      current.next.previous = newLink;&lt;br /&gt;
    }&lt;br /&gt;
    newLink.previous = current; &lt;br /&gt;
    current.next = newLink; &lt;br /&gt;
    return true; // found it, insert&lt;br /&gt;
  }&lt;br /&gt;
  public Link deleteKey(long key){&lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current.dData != key)&lt;br /&gt;
    {&lt;br /&gt;
      current = current.next;&lt;br /&gt;
      if (current == null)&lt;br /&gt;
        return null; // cannot find it&lt;br /&gt;
    }&lt;br /&gt;
    if (current == first) // found it; first item?&lt;br /&gt;
      first = current.next; &lt;br /&gt;
    else&lt;br /&gt;
      current.previous.next = current.next;&lt;br /&gt;
    if (current == last) // last item?&lt;br /&gt;
      last = current.previous; &lt;br /&gt;
    else&lt;br /&gt;
      // not last&lt;br /&gt;
      current.next.previous = current.previous;&lt;br /&gt;
    return current; // return value&lt;br /&gt;
  }&lt;br /&gt;
  public void displayForward() {&lt;br /&gt;
    System.out.print(&amp;quot;List (first to last): &amp;quot;);&lt;br /&gt;
    Link current = first; // start at beginning&lt;br /&gt;
    while (current != null) // until end of list,&lt;br /&gt;
    {&lt;br /&gt;
      current.displayLink();&lt;br /&gt;
      current = current.next; // move to next link&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void displayBackward() {&lt;br /&gt;
    System.out.print(&amp;quot;List : &amp;quot;);&lt;br /&gt;
    Link current = last;&lt;br /&gt;
    while (current != null){&lt;br /&gt;
      current.displayLink();&lt;br /&gt;
      current = current.previous;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    DoublyLinkedList theList = new DoublyLinkedList();&lt;br /&gt;
    theList.insertFirst(22);&lt;br /&gt;
    theList.insertFirst(44);&lt;br /&gt;
    theList.insertLast(33);&lt;br /&gt;
    theList.insertLast(55);&lt;br /&gt;
    theList.displayForward();&lt;br /&gt;
    theList.displayBackward();&lt;br /&gt;
    theList.deleteFirst();&lt;br /&gt;
    theList.deleteLast();&lt;br /&gt;
    theList.deleteKey(11);&lt;br /&gt;
    theList.displayForward();&lt;br /&gt;
    theList.insertAfter(22, 77); // insert 77 after 22&lt;br /&gt;
    theList.insertAfter(33, 88); // insert 88 after 33&lt;br /&gt;
    theList.displayForward();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Link {&lt;br /&gt;
  public long dData; // data item&lt;br /&gt;
  public Link next; // next link in list&lt;br /&gt;
  public Link previous; // previous link in list&lt;br /&gt;
  public Link(long d)&lt;br /&gt;
  {&lt;br /&gt;
    dData = d;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayLink(){&lt;br /&gt;
    System.out.print(dData + &amp;quot; &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Frist last list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Link {&lt;br /&gt;
  public long dData; &lt;br /&gt;
  public Link next; &lt;br /&gt;
  public Link(long d){&lt;br /&gt;
    dData = d;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayLink(){&lt;br /&gt;
    System.out.print(dData + &amp;quot; &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class FirstLastList1 {&lt;br /&gt;
  private Link first; &lt;br /&gt;
  private Link last; &lt;br /&gt;
  public FirstLastList1() {&lt;br /&gt;
    first = null;&lt;br /&gt;
    last = null;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty() {&lt;br /&gt;
    return first == null;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertLast(long dd){&lt;br /&gt;
    Link newLink = new Link(dd); &lt;br /&gt;
    if (isEmpty()) &lt;br /&gt;
      first = newLink; &lt;br /&gt;
    else&lt;br /&gt;
      last.next = newLink;&lt;br /&gt;
    last = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public long deleteFirst(){&lt;br /&gt;
    long temp = first.dData;&lt;br /&gt;
    if (first.next == null) &lt;br /&gt;
      last = null;&lt;br /&gt;
    first = first.next; &lt;br /&gt;
    return temp;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayList() {&lt;br /&gt;
    Link current = first;&lt;br /&gt;
    while (current != null){&lt;br /&gt;
      current.displayLink();&lt;br /&gt;
      current = current.next;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class LinkQueue {&lt;br /&gt;
  private FirstLastList1 theList;&lt;br /&gt;
  public LinkQueue() {&lt;br /&gt;
    theList = new FirstLastList1();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty(){&lt;br /&gt;
    return theList.isEmpty();&lt;br /&gt;
  }&lt;br /&gt;
  public void insert(long j){&lt;br /&gt;
    theList.insertLast(j);&lt;br /&gt;
  }&lt;br /&gt;
  public long remove()&lt;br /&gt;
  {&lt;br /&gt;
    return theList.deleteFirst();&lt;br /&gt;
  }&lt;br /&gt;
  public void displayQueue() {&lt;br /&gt;
    System.out.print(&amp;quot;Queue: &amp;quot;);&lt;br /&gt;
    theList.displayList();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    LinkQueue theQueue = new LinkQueue();&lt;br /&gt;
    theQueue.insert(20);&lt;br /&gt;
    theQueue.insert(40);&lt;br /&gt;
    theQueue.displayQueue();&lt;br /&gt;
    theQueue.insert(60);&lt;br /&gt;
    theQueue.insert(80);&lt;br /&gt;
    theQueue.displayQueue();&lt;br /&gt;
    theQueue.remove();&lt;br /&gt;
    theQueue.remove();&lt;br /&gt;
    theQueue.displayQueue();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List with first and last references ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class FirstLastList {&lt;br /&gt;
  private Link first; // ref to first link&lt;br /&gt;
  private Link last; // ref to last link&lt;br /&gt;
  public FirstLastList() {&lt;br /&gt;
    first = null; &lt;br /&gt;
    last = null;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty() {&lt;br /&gt;
    return first == null;&lt;br /&gt;
  }&lt;br /&gt;
  public void insertFirst(long dd) {&lt;br /&gt;
    Link newLink = new Link(dd); // make new link&lt;br /&gt;
    if (isEmpty()) &lt;br /&gt;
      last = newLink; &lt;br /&gt;
    newLink.next = first; &lt;br /&gt;
    first = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public void insertLast(long dd) {&lt;br /&gt;
    Link newLink = new Link(dd); &lt;br /&gt;
    if (isEmpty()) &lt;br /&gt;
      first = newLink; &lt;br /&gt;
    else&lt;br /&gt;
      last.next = newLink; &lt;br /&gt;
      last = newLink; &lt;br /&gt;
  }&lt;br /&gt;
  public long deleteFirst(){ &lt;br /&gt;
    long temp = first.dData;&lt;br /&gt;
    if (first.next == null) // if only one item&lt;br /&gt;
      last = null; &lt;br /&gt;
    first = first.next; &lt;br /&gt;
    return temp;&lt;br /&gt;
  }&lt;br /&gt;
  public void displayList() {&lt;br /&gt;
    System.out.print(&amp;quot;List: &amp;quot;);&lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current != null)&lt;br /&gt;
    {&lt;br /&gt;
      current.displayLink(); &lt;br /&gt;
      current = current.next;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) { // make a new list&lt;br /&gt;
    FirstLastList theList = new FirstLastList();&lt;br /&gt;
    theList.insertFirst(22);&lt;br /&gt;
    theList.insertFirst(44);&lt;br /&gt;
    theList.insertLast(33);&lt;br /&gt;
    theList.insertLast(55);&lt;br /&gt;
    theList.displayList();&lt;br /&gt;
    theList.deleteFirst();&lt;br /&gt;
    theList.deleteFirst();&lt;br /&gt;
    theList.displayList();&lt;br /&gt;
  } &lt;br /&gt;
  class Link {&lt;br /&gt;
    public long dData; &lt;br /&gt;
  &lt;br /&gt;
    public Link next; &lt;br /&gt;
  &lt;br /&gt;
    public Link(long d) {&lt;br /&gt;
      dData = d;&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    public void displayLink() {&lt;br /&gt;
      System.out.print(dData + &amp;quot; &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redundancy Checker ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 *        Code by David Beuze. No rights reserved :) - 2006&lt;br /&gt;
 *&lt;br /&gt;
 *        contact: smerpy@gmail.ru&lt;br /&gt;
 */&lt;br /&gt;
/*&lt;br /&gt;
 *        This code snippet takes a list of objects and checks for any redundancy in the list.&lt;br /&gt;
 *        In this example I&amp;quot;ve taken a list of Integer, but it can be generalized to any kind&lt;br /&gt;
 *        of object.&lt;br /&gt;
 */&lt;br /&gt;
/*Output:&lt;br /&gt;
 * &lt;br /&gt;
 * Oh no! The value 1 is redundant.&lt;br /&gt;
 * &lt;br /&gt;
 * */&lt;br /&gt;
&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.ListIterator;&lt;br /&gt;
public class RedundancyChecker {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    new RedundancyChecker();&lt;br /&gt;
  }&lt;br /&gt;
  public RedundancyChecker() {&lt;br /&gt;
    Integer[] array = new Integer[5]; // Create and&lt;br /&gt;
    // array of&lt;br /&gt;
    // Integer&lt;br /&gt;
    Integer i0 = new Integer(0);&lt;br /&gt;
    array[0] = i0;&lt;br /&gt;
    Integer i1 = new Integer(1); // &amp;lt;--------&lt;br /&gt;
    array[1] = i1; // |&lt;br /&gt;
    Integer i2 = new Integer(2); // |--- redundant&lt;br /&gt;
    // values&lt;br /&gt;
    array[2] = i2; // |&lt;br /&gt;
    Integer i3 = new Integer(1); // &amp;lt;--------&lt;br /&gt;
    array[3] = i3;&lt;br /&gt;
    Integer i4 = new Integer(4);&lt;br /&gt;
    array[4] = i4;&lt;br /&gt;
    // transform the array into a List&lt;br /&gt;
    List l = Arrays.asList(array);&lt;br /&gt;
    // Check the List&lt;br /&gt;
    checkForRedundancy(l);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean checkForRedundancy(List l) {&lt;br /&gt;
    ListIterator li1 = l.listIterator(); // Make a&lt;br /&gt;
    // general&lt;br /&gt;
    // ListIterator&lt;br /&gt;
    // on the list&lt;br /&gt;
    while (li1.hasNext()) {&lt;br /&gt;
      // Store the value of the actual first checked&lt;br /&gt;
      // element of the List,&lt;br /&gt;
      // it needs to be stored because it calls the&lt;br /&gt;
      // .next(), which we can call only once per loop&lt;br /&gt;
      // in order to sweep the whole list.&lt;br /&gt;
      int check1 = ((Integer) li1.next()).intValue();&lt;br /&gt;
      // Make a second ListIterator that will start&lt;br /&gt;
      // with the element that is just after the&lt;br /&gt;
      // actual first checked one,&lt;br /&gt;
      // in order to avoid checking several times the&lt;br /&gt;
      // same elements.&lt;br /&gt;
      ListIterator li2 = l.listIterator(li1.nextIndex() + 1);&lt;br /&gt;
      while (li2.hasNext()) {&lt;br /&gt;
        // Store the following elements one by&lt;br /&gt;
        // one and check to see if they match&lt;br /&gt;
        // the actual one.&lt;br /&gt;
        int check2 = ((Integer) li2.next()).intValue();&lt;br /&gt;
        if (check1 == check2) {&lt;br /&gt;
          System.out.println(&amp;quot;Oh no! The value &amp;quot; + check1 + &amp;quot; is redundant.&amp;quot;);&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      // The .next() method has already been called at&lt;br /&gt;
      // the beginning of the loop.&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sorted list ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class SortedList {&lt;br /&gt;
  private Link first; &lt;br /&gt;
  public SortedList() {&lt;br /&gt;
    first = null;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isEmpty(){&lt;br /&gt;
    return (first == null);&lt;br /&gt;
  }&lt;br /&gt;
  public void insert(long key){&lt;br /&gt;
    Link newLink = new Link(key); &lt;br /&gt;
    Link previous = null; &lt;br /&gt;
    Link current = first;&lt;br /&gt;
    while (current != null &amp;amp;&amp;amp; key &amp;gt; current.data) {&lt;br /&gt;
      previous = current;&lt;br /&gt;
      current = current.next;&lt;br /&gt;
    }&lt;br /&gt;
    if (previous == null)&lt;br /&gt;
      first = newLink; &lt;br /&gt;
    else&lt;br /&gt;
      previous.next = newLink; &lt;br /&gt;
    newLink.next = current; &lt;br /&gt;
  }&lt;br /&gt;
  public Link remove() { &lt;br /&gt;
    Link temp = first; &lt;br /&gt;
    first = first.next;&lt;br /&gt;
    return temp; &lt;br /&gt;
  }&lt;br /&gt;
  public void displayList() {&lt;br /&gt;
    System.out.print(&amp;quot;List: &amp;quot;);&lt;br /&gt;
    Link current = first; &lt;br /&gt;
    while (current != null){&lt;br /&gt;
      current.displayLink(); &lt;br /&gt;
      current = current.next;&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) { &lt;br /&gt;
    SortedList theSortedList = new SortedList();&lt;br /&gt;
    theSortedList.insert(20); &lt;br /&gt;
    theSortedList.insert(40);&lt;br /&gt;
    theSortedList.displayList(); &lt;br /&gt;
    theSortedList.insert(10); &lt;br /&gt;
    theSortedList.insert(30);&lt;br /&gt;
    theSortedList.insert(50);&lt;br /&gt;
    theSortedList.displayList(); &lt;br /&gt;
    theSortedList.remove(); &lt;br /&gt;
    theSortedList.displayList(); &lt;br /&gt;
  } &lt;br /&gt;
  class Link {&lt;br /&gt;
    public long data; &lt;br /&gt;
  &lt;br /&gt;
    public Link next; &lt;br /&gt;
  &lt;br /&gt;
    public Link(long dd) {&lt;br /&gt;
      data = dd;&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    public void displayLink() {&lt;br /&gt;
      System.out.print(data + &amp;quot; &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>