ListDemo.java |
1 /**************************************************************************** 2 * This demo file is part of yFiles for Java 2.14. 3 * Copyright (c) 2000-2017 by yWorks GmbH, Vor dem Kreuzberg 28, 4 * 72070 Tuebingen, Germany. All rights reserved. 5 * 6 * yFiles demo files exhibit yFiles for Java functionalities. Any redistribution 7 * of demo files in source code or binary form, with or without 8 * modification, is not permitted. 9 * 10 * Owners of a valid software license for a yFiles for Java version that this 11 * demo is shipped with are allowed to use the demo source code as basis 12 * for their own yFiles for Java powered applications. Use of such programs is 13 * governed by the rights and conditions as set out in the yFiles for Java 14 * license agreement. 15 * 16 * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 19 * NO EVENT SHALL yWorks BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 ***************************************************************************/ 28 package demo.base; 29 30 import y.base.ListCell; 31 import y.base.YCursor; 32 import y.base.YList; 33 34 import java.util.Comparator; 35 36 /** 37 * Demonstrates how to use the linked list data type YList and the YCursor interface. 38 * <p> 39 * <b>usage:</b> java demo.base.ListDemo 40 * </p> 41 42 * @see <a href="http://docs.yworks.com/yfiles/doc/api/index.html#/dguide/containers#containers" target="_blank">Section Containers</a> in the yFiles for Java Developer's Guide 43 * @see <a href="http://docs.yworks.com/yfiles/doc/api/index.html#/dguide/iteration#iteration" target="_blank">Section Iteration Mechanisms</a> in the yFiles for Java Developer's Guide 44 */ 45 public class ListDemo 46 { 47 public ListDemo() 48 { 49 //create new YList instance 50 YList list = new YList(); 51 52 //add numbered String elements to list 53 for(int i = 0; i < 20; i++) 54 list.addLast(""+i); 55 56 //iterate over list from first to last 57 System.out.println("List elements from front to back"); 58 for(YCursor c = list.cursor(); c.ok(); c.next()) 59 { 60 //output element at cursor position 61 System.out.println(c.current()); 62 } 63 64 //iterate over list from last to first 65 System.out.println("List elements from back to front"); 66 YCursor rc = list.cursor(); 67 for(rc.toLast(); rc.ok(); rc.prev()) 68 { 69 //output element at cursor position 70 System.out.println(rc.current()); 71 } 72 73 //sort list lexicografically 74 list.sort(new Comparator() 75 { 76 public int compare(Object a, Object b) 77 { 78 return ((String)a).compareTo((String)b); 79 } 80 }); 81 82 83 //iterate over list from first to last 84 System.out.println("Lexicographically sorted list"); 85 for(YCursor c = list.cursor(); c.ok(); c.next()) 86 { 87 //output element at cursor position 88 System.out.println(c.current()); 89 } 90 91 //low level iteration on list cells (non-const iteration) 92 for(ListCell cell = list.firstCell(); cell != null; cell = cell.succ()) 93 { 94 String s = (String)cell.getInfo(); 95 //remove all Strings from list that have length == 1 96 if(s.length() == 1) 97 { 98 list.removeCell(cell); 99 //note that cell is still half-valid, i.e it's succ() and pred() 100 //pointers are still unchanged. therefore cell = cell.succ() is 101 //valid in the for-statement 102 } 103 } 104 105 System.out.println("list after element removal"); 106 System.out.println(list); 107 108 //initialize list2 with the elements from list 109 YList list2 = new YList(list.cursor()); 110 System.out.println("list2 after creation"); 111 System.out.println(list2); 112 113 //reverse element order in list2 114 list2.reverse(); 115 System.out.println("list2 after reversal"); 116 System.out.println(list2); 117 118 //move all elements of list2 to the end of list 119 list.splice(list2); 120 121 System.out.println("list after splicing"); 122 System.out.println(list); 123 System.out.println("list2 after splicing"); 124 System.out.println(list2); 125 126 } 127 128 public static void main(String[] args) 129 { 130 new ListDemo(); 131 } 132 133 } 134