Search Results

Search found 2960 results on 119 pages for 'println'.

Page 65/119 | < Previous Page | 61 62 63 64 65 66 67 68 69 70 71 72  | Next Page >

  • Poor performance / speed of regex with lookahead

    - by Hugo Zaragoza
    I have been observing extremely slow execution times with expressions with several lookaheads. I suppose that this is due to underlying data structures, but it seems pretty extreme and I wonder if I do something wrong or if there are known work-arounds. The problem is determining if a set of words are present in a string, in any order. For example we want to find out if two terms "term1" AND "term2" are somewhere in a string. I do this with the expresion: (?=.*\bterm1\b)(?=.*\bterm2\b) But what I observe is that this is an order of magnitude slower than checking first just \bterm1\b and just then \bterm2\b This seems to indicate that I should use an array of patterns instead of a single pattern with lookaheads... is this right? it seems wrong... Here is an example test code and resulting times: public static void speedLookAhead() { Matcher m, m1, m2; boolean find; int its = 1000000; // create long non-matching string char[] str = new char[2000]; for (int i = 0; i < str.length; i++) { str[i] = 'x'; } String test = str.toString(); // First method: use one expression with lookaheads m = Pattern.compile("(?=.*\\bterm1\\b)(?=.*\\bterm2\\b)").matcher(test); long time = System.currentTimeMillis(); ; for (int i = 0; i < its; i++) { m.reset(test); find = m.find(); } time = System.currentTimeMillis() - time; System.out.println(time); // Second method: use two expressions and AND the results m1 = Pattern.compile("\\bterm1\\b").matcher(test); m2 = Pattern.compile("\\bterm2\\b").matcher(test); time = System.currentTimeMillis(); ; for (int i = 0; i < its; i++) { m1.reset(test); m2.reset(test); find = m1.find() && m2.find(); } time = System.currentTimeMillis() - time; System.out.println(time); } This outputs in my computer: 1754 150

    Read the article

  • Is scala's cake pattern possible with parametrized components?

    - by Nicolas
    Parametrized components work well with the cake pattern as long as you are only interested in a unique component for each typed component's, example: trait AComponent[T] { val a:A[T] class A[T](implicit mf:Manifest[T]) { println(mf) } } class App extends AComponent[Int] { val a = new A[Int]() } new App Now my application requires me to inject an A[Int] and an A[String], obviously scala's type system doesn't allow me to extends AComponent twice. What is the common practice in this situation ?

    Read the article

  • can i know how to fix this error? is delete method

    - by user334101
    import javax.swing.*; import java.io.File; public class Third { public static void main(String[] args) throws Exception { String humanName; humanName = JOptionPane.showInputDialog(null, "Enter the file name"); File file = new File(+ humanName".txt"); System.out.println(file.delete()); JOptionPane.showMessageDialog(null, "File deleted" + humanName); } }

    Read the article

  • Why does the Java compiler complain about a local variable not having been initialized here?

    - by pele
    int a = 1, b; if(a > 0) b = 1; if(a <= 0) b = 2; System.out.println(b); If I run this, I receive: Exception in thread "main" java.lang.Error: Unresolved compilation problem: The local variable b may not have been initialized at Broom.main(Broom.java:9) I know that the local variables are not initialized and is your duty to do this, but in this case, the first if doesn't initialize the variable?

    Read the article

  • Java NullPointerException. Why?

    - by user292844
    I am new to Java. I just read that class variables in Java have default value. I tried the following program. I was expecting to get the output as 0, which is the default value on an integer, but I get the NullPointerException. What am I missing? class Test{ static Integer iVar; public static void main(String...args) { System.out.println(iVar.intValue()); } }

    Read the article

  • Assigning int to byte in java?

    - by user303218
    int val =233; byte b = (byte)val; System.out.println(b); I have a simple case, like one integer with some value & i want to convert that value & place in the byte type for output. But in this case negative value is coming? How to successfully place the int value to byte type.

    Read the article

  • Getting the right result of mouse click event

    - by Jessy
    Hello, I'm curious why I got the "right" BUT "wrong"number of result when I click the mouse. I supposed to print on the console mouseClicked once everytimes the mouse is clicked. However I got many of them printed out everytimes I clicked the mouse ...sometimes 5 e.g. mouseClicked mouseClicked mouseClicked mouseClicked mouseClicked Instead of just mouseClicked Why? public void mouseClicked(MouseEvent arg0) { System.out.println("mouseClicked"); }

    Read the article

  • how to return 2 values from a java function?

    - by javaLearner.java
    Here is my code: // Function code public static int something(){ int number1 = 1; int number2 = 2; return number1, number2; } // Main class code public static void main(String[] args) { something(); System.out.println(number1 + number2); } Error: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement at assignment.Main.something(Main.java:86) at assignment.Main.main(Main.java:53) Java Result: 1

    Read the article

  • JPanels, JFrames, and Windows, Oh my!

    - by Jonathan
    Simply stated, I am trying to make a game I am working on full-screen. I have the following code I am trying to use: GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); if(!gs.isFullScreenSupported()) { System.out.println("full-screen not supported"); } Frame frame = new Frame(gs.getDefaultConfiguration()); Window win = new Window(frame); try { // Enter full-screen mode gs.setFullScreenWindow(win); win.validate(); } Problem with this is that I am working within a class that extends JPanel, and while I have a variable of type Frame, I have none of type Window within the class. My understanding of JPanel is that it is a Window of sorts, but I cannot pass 'this' into gs.setFullScreenWindow(Window win)... How should I go about doing this? Is there any easy way of calling that, or a similar method, using a JPanel? Is there a way I can get something of type Window from my JPanel? - EDIT: The following method changes the state of JFrame and is called every 10ms: public void paintScreen() { Graphics g; try{ g = this.getGraphics(); //get Panel's graphic context if(g == null) { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setExtendedState(frame.getExtendedState()|JFrame.MAXIMIZED_BOTH); frame.add(this); frame.pack(); frame.setResizable(false); frame.setTitle("Game Window"); frame.setVisible(true); } if((g != null) && (dbImage != null)) { g.drawImage(dbImage, 0, 0, null); } Toolkit.getDefaultToolkit().sync(); //sync the display on some systems g.dispose(); } catch (Exception e) { if(blockError) { blockError = false; } else { System.out.println("Graphics context error: " + e); } } } I anticipate that there may be a few redundancies or unnecessary calls after the if(g==null) statement (all the frame.somethingOrOther()s), any cleanup advice would be appreciated... Also, the block error is what it seems. I am ignoring an error. The error only occurs once, and this works fine when setup to ignore the first instance of the error... For anyone interested I can post additional info there if anyone wants to see if that block can be removed, but i'm not concerned... I might look into it later.

    Read the article

  • arrayListOutOfBoundsException... Please Help?

    - by Jacob
    This is my class Debugger. Can anyone try and run it and see whens wrong? Ive spent hours on it already. :( public class Debugger { private String codeToDebug = ""; public Debugger(String code) { codeToDebug = code; } /** * This method itterates over a css file and adds all the properties to an arraylist */ public void searchDuplicates() { boolean isInside = false; ArrayList<String> methodStorage = new ArrayList(); int stored = 0; String[] codeArray = codeToDebug.split(""); try { int i = 0; while(i<codeArray.length) { if(codeArray[i].equals("}")) { isInside = false; } if(isInside && !codeArray[i].equals(" ")) { boolean methodFound = false; String method = ""; int c = i; while(!methodFound) { method += codeArray[c]; if(codeArray[c+1].equals(":")) { methodFound = true; } else { c++; } } methodStorage.add(stored, method); System.out.println(methodStorage.get(stored)); stored++; boolean stillInside = true; int skip = i; while(stillInside) { if(codeArray[skip].equals(";")) { stillInside = false; } else { skip++; } } i = skip; } if(codeArray[i].equals("{")) { isInside = true; } i++; } } catch(ArrayIndexOutOfBoundsException ar) { System.out.println("------- array out of bounds exception -------"); } } /** * Takes in String and outputs the number of characters it contains * @param input * @return Number of characters */ public static int countString(String input) { String[] words = input.split(""); int counter = -1; for(int i = 0; i<words.length; i++){ counter++; } return counter; } public static void main(String[] args) { Debugger h = new Debugger("body {margin:;\n}"); h.searchDuplicates(); } }

    Read the article

  • Is it possible to call the main(String[] args) after catching an exception?

    - by Jason
    I'm working on a Serpinski triangle program that asks the user for the levels of triangles to draw. In the interests of idiot-proofing my program, I put this in: Scanner input= new Scanner(System.in); System.out.println(msg); try { level= input.nextInt(); } catch (Exception e) { System.out.print(warning); //restart main method } Is it possible, if the user punches in a letter or symbol, to restart the main method after the exception has been caught?

    Read the article

  • Java Synchronized function

    - by leon
    Hi I have a question. In the following code, if a thread were blocked at wait statement, and another thread attempts to execute foo(), would the hello wolrd message be printed? and Why? Many Thanks synchronized foo(){ system.out.println("hello world"); ..... wait(); ..... }

    Read the article

  • JarOutputStream put parent folder before my-wanted folder

    - by adhitya kristanto
    I tried to make jar with code from How to use JarOutputStream to create a JAR file? but that code always makes new parent folder of my input file/folder before it's inserted into .jar Folder's Path that I want to be added into jar: C:/Trial/MyFolder Folder that I want in MyJar.jar: MyFolder But Folder that was inserted in MyJar.jar: Trial Has it to be done that way? Thanks. here is the code: import EditorXML.GlobalStatus.GlobalStatus; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; /** * * @author Photosphere */ public class JarCreatingProgram { public JarCreatingProgram() { } public void proceedNow() throws IOException{ File ed = new File("C:/Trial/EditingDini"); File meta = new File("C:/Trial/META-INF"); File net = new File("C:/Trial/net"); File org = new File("C:/Trial/org"); JarOutputStream target = new JarOutputStream(new FileOutputStream("D:/EditingDiniApp.jar")); add(ed, target); add(meta, target); add(net, target); add(org, target); target.close(); } private static void add(File source, JarOutputStream target) throws IOException { BufferedInputStream in = null; try{ if (source.isDirectory()) { String name = source.getPath().replace("\\", "/"); if (!name.isEmpty()) { if (!name.endsWith("/")) name += "/"; JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); System.out.println("ENTRY DALAM IF: "+entry.toString()); target.closeEntry(); } for (File nestedFile: source.listFiles()) add(nestedFile, target); return; } JarEntry entry = new JarEntry(source.getPath().replace("\\", "/")); entry.setTime(source.lastModified()); target.putNextEntry(entry); in = new BufferedInputStream(new FileInputStream(source)); System.out.println("ENTRY: "+entry.toString()); byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) break; target.write(buffer, 0, count); } target.closeEntry(); } finally{ if (in != null) in.close(); } } }

    Read the article

  • Array increment operator

    - by Stardust
    Could any one please tell me the meaning of "++" with array in the following code in Java: int [ ] arr = new int[ 4 ]; for(int i = 0; i < arr.length; i++){ arr[ i ] = i + 1; System.out.println(arr[ i ]++); } what is arr[ i ]++ meaning in above code, and why we can't do like: arr[ i ]++ = i + 1;

    Read the article

  • Making an efficient algorithm

    - by James P.
    Here's my recent submission for the FB programming contest (qualifying round only requires to upload program output so source code doesn't matter). The objective is to find two squares that add up to a given value. I've left it as it is as an example. It does the job but is too slow for my liking. Here's the points that are obviously eating up time: List of squares is being recalculated for each call of getNumOfDoubleSquares(). This could be precalculated or extended when needed. Both squares are being checked for when it is only necessary to check for one (complements). There might be a more efficient way than a double-nested loop to find pairs. Other suggestions? Besides this particular problem, what do you look for when optimizing an algorithm? public static int getNumOfDoubleSquares( Integer target ){ int num = 0; ArrayList<Integer> squares = new ArrayList<Integer>(); ArrayList<Integer> found = new ArrayList<Integer>(); int squareValue = 0; for( int j=0; squareValue<=target; j++ ){ squares.add(j, squareValue); squareValue = (int)Math.pow(j+1,2); } int squareSum = 0; System.out.println( "Target=" + target ); for( int i = 0; i < squares.size(); i++ ){ int square1 = squares.get(i); for( int j = 0; j < squares.size(); j++ ){ int square2 = squares.get(j); squareSum = square1 + square2; if( squareSum == target && !found.contains( square1 ) && !found.contains( square2 ) ){ found.add(square1); found.add(square2); System.out.println( "Found !" + square1 +"+"+ square2 +"="+ squareSum); num++; } } } return num; }

    Read the article

  • Java reflection framework and security

    - by Jijoy
    Hi , Assume I have a singleton class in an external lib to my application. But still I can create instances of that particular class using reflection. Like this Class clas = Class.forName(Private.class.getName()); for(Constructor c : clas.getDeclaredConstructors()){ c.setAccessible(true); Private p = (Private) c.newInstance(); System.out.println(p); } How can I restrict this ? . Thanks J

    Read the article

  • To display an album art from media store in android

    - by user1834724
    I'm not able to display album art from media store while listing albums,I'm getting following error Bad request for field slot 0,-1. numRows = 32, numColumns = 7 01-02 02:48:16.789: D/AndroidRuntime(4963): Shutting down VM 01-02 02:48:16.789: W/dalvikvm(4963): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 01-02 02:48:16.804: E/AndroidRuntime(4963): FATAL EXCEPTION: main 01-02 02:48:16.804: E/AndroidRuntime(4963): java.lang.IllegalStateException: get field slot from row 0 col -1 failed Can anyone kindly help with this issue,Thanks in advance public class AlbumbsListActivity extends Activity { private ListAdapter albumListAdapter; private HashMap<Integer, Integer> albumInfo; private HashMap<Integer, Integer> albumListInfo; private HashMap<Integer, String> albumListTitleInfo; private String audioMediaId; private static final String TAG = "AlbumsListActivity"; Boolean showAlbumList = false; Boolean AlbumListTitle = false; ImageView album_art ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.albums_list_layout); Cursor cursor; ContentResolver cr = getApplicationContext().getContentResolver(); if (getIntent().hasExtra(Util.ALBUM_ID)) { int albumId = getIntent().getIntExtra(Util.ALBUM_ID, Util.MINUS_ONE); String[] projection = new String[] { Albums._ID, Albums.ALBUM, Albums.ARTIST, Albums.ALBUM_ART, Albums.NUMBER_OF_SONGS }; String selection = null; String[] selectionArgs = null; String sortOrder = Media.ALBUM + " ASC"; cursor = cr.query(Albums.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, sortOrder); /* final String[] ccols = new String[] { //MediaStore.Audio.Albums., MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM, MediaStore.Audio.Albums.ARTIST, MediaStore.Audio.Albums.ALBUM_ART, MediaStore.Audio.Albums.NUMBER_OF_SONGS }; cursor = cr.query(MediaStore.Audio.Albums.getContentUri( "external"), ccols, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);*/ showAlbumList = true; } else { String order = MediaStore.Audio.Albums.ALBUM + " ASC"; String where = MediaStore.Audio.Albums.ALBUM; cursor = managedQuery(Media.EXTERNAL_CONTENT_URI, DbUtil.projection, null, null, order); showAlbumList = false; } albumInfo = new HashMap<Integer, Integer>(); albumListInfo = new HashMap<Integer, Integer>(); ListView listView = (ListView) findViewById(R.id.mylist_album); listView.setFastScrollEnabled(true); listView.setOnItemLongClickListener(new ItemLongClickListener()); listView.setAdapter(new AlbumCursorAdapter(this, cursor, DbUtil.displayFields, DbUtil.displayViews,showAlbumList)); final Uri uri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI; final Cursor albumListCursor = cr.query(uri, DbUtil.Albumprojection, null, null, null); } private class AlbumCursorAdapter extends SimpleCursorAdapter implements SectionIndexer{ private final Context context; private final Cursor cursorValues; private Time musicTime; private Boolean isAlbumList; private MusicAlphabetIndexer mIndexer; private int mTitleIdx; public AlbumCursorAdapter(Context context, Cursor cursor, String[] from, int[] to,Boolean isAlbumList) { super(context, 0, cursor, from, to); this.context = context; this.cursorValues = cursor; //musicTime = new Time(); this.isAlbumList = isAlbumList; } String albumName=""; String artistName = ""; String numberofsongs = ""; long albumid; @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); rowView = inflater .inflate(R.layout.row_album_layout, parent, false); } this.cursorValues.moveToPosition(position); String title = ""; String artistName = ""; String albumName = ""; int count; long albumid = 0; String songDuration = ""; if (isAlbumList) { albumInfo.put( position, Integer.parseInt(this.cursorValues.getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Albums._ID)))); artistName = this.cursorValues .getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Albums.ARTIST)); albumName = this.cursorValues .getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Albums.ALBUM)); albumid=Integer.parseInt(this.cursorValues.getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Albums.ALBUM_ID))); } else { albumInfo.put(position, Integer.parseInt(this.cursorValues .getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Media._ID)))); artistName = this.cursorValues.getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Media.ARTIST)); albumName = this.cursorValues.getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Media.ALBUM)); albumid=Integer.parseInt(this.cursorValues.getString(this.cursorValues .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID))); } //code for Alphabetical Indexer mTitleIdx = cursorValues.getColumnIndex(MediaStore.Audio.Media.ALBUM); mIndexer = new MusicAlphabetIndexer(cursorValues, mTitleIdx, getResources().getString(R.string.fast_scroll_alphabet)); //end TextView metaone = (TextView) rowView.findViewById(R.id.album_name); TextView metatwo = (TextView) rowView.findViewById(R.id.artist_name); ImageView metafour = (ImageView) rowView.findViewById(R.id.album_art); TextView metathree = (TextView) rowView .findViewById(R.id.songs_count); metaone.setText(albumName); metatwo.setText(artistName); (metafour)getAlbumArt(albumid); System.out.println("albumid----------"+albumid); metaThree.setText(DbUtil.makeTimeString(context, secs)); getAlbumArt(albumid); } TextView metaone = (TextView) rowView.findViewById(R.id.album_name); TextView metatwo = (TextView) rowView.findViewById(R.id.artist_name); album_art = (ImageView) rowView.findViewById(R.id.album_art); //TextView metathree = (TextView) rowView.findViewById(R.id.songs_count); metaone.setText(albumName); metatwo.setText(artistName); return rowView; } } String albumArtUri = ""; private void getAlbumArt(long albumid) { Uri uri=ContentUris.withAppendedId(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumid); System.out.println("hhhhhhhhhhh" + uri); Cursor cursor = getContentResolver().query( ContentUris.withAppendedId( MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumid), new String[] { MediaStore.Audio.AlbumColumns.ALBUM_ART }, null, null, null); if (cursor.moveToFirst()) { albumArtUri = cursor.getString(0); } System.out.println("kkkkkkkkkkkkkkkkkkk :" + albumArtUri); cursor.close(); if(albumArtUri != null){ Options opts = new Options(); opts.inJustDecodeBounds = true; Bitmap albumCoverBitmap = BitmapFactory.decodeFile(albumArtUri, opts); opts.inJustDecodeBounds = false; albumCoverBitmap = BitmapFactory.decodeFile(albumArtUri, opts); if(albumCoverBitmap != null) album_art.setImageBitmap(albumCoverBitmap); }else { // TODO: Options opts = new Options(); Bitmap albumCoverBitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.albumart_mp_unknown_list, opts); if(albumCoverBitmap != null) album_art.setImageBitmap(albumCoverBitmap); } } } }

    Read the article

  • IndexOf method returns 0 when it should had return -1 in C# / Java

    - by jcgarciam
    A friend of mine came to me with this strange behavior which i can't explain, any insight view would be appreciated. Im running VS 2005 (C# 2.0), the following code show the behavior int rr = "test".IndexOf(""); Console.WriteLine(rr.ToString()); the above code, print "0" which clearly show it should have return -1 This also happen in Java where the following Class show the behavior: public class Test{ public static void main(String[] args){ System.out.println("Result->"+("test".indexOf(""))); } } Im running Java 1.6.0_17

    Read the article

  • Inconsistent email formatting with inline css created using Javamail

    - by user1816183
    Okay, so I have a program that sends an email when it is finished running. I use inline css to format the email. This was working up until yesterday however now I am seeing different formats depending on which email account I view the email in. It coincides with an upgrade from Selenium 2.35.0 to 2.37.0 however I don't think this is my issue since I rolled back to 2.35.0 and it still happens. package tests; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class TESTTEST { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.host","xxx.xxx.xxx.xxx"); Session session = Session.getInstance(props); String emailFrom="[email protected]"; String emailTo1="[email protected]"; MimeMessage message = new MimeMessage(session); message.setSubject("Testing HTML Email"); message.setFrom(new InternetAddress(emailFrom)); String htmlBody = "<STYLE>body {font-family:sans-serif,arial,helvetica,sans-serif;font-size:9pt;}" +"TABLE {border-collapse:collapse;border:1px solid black;}" +"TH {background-color:grey;color:white;padding:5px;border:1px solid black;font-size:9pt;}" +"TD {padding:5px;border:1px solid black;font-size:9pt;}" +"H3 {font-size:12pt;}" +".PASSED {background-color:#00FF00}" +".FAILED {background-color:#FF0000}" +".SKIPPED {background-color:#DEDEDE}" +".ITALIC {font-style:italic}" +"</STYLE>" + "<TABLE><TR><TD CLASS=PASSED>FAIL</TD><TD STYLE=background-color:#FF0000>FAIL</TD></TR></TABLE>"; message.setContent(htmlBody, "text/html; charset=ISO-8859-1"); message.addRecipient(Message.RecipientType.TO,new InternetAddress(emailTo1)); Transport.send(message,message.getRecipients(Message.RecipientType.TO)); System.out.println(htmlBody); System.out.println("Email Sent"); } } When I view the email in Hotmail/Outlook.com, it looks fine In Gmail In Lotus Notes Anybody able to help?

    Read the article

  • Java: Is there a way to efficiently insert or remove many elements from the middle of a LinkedList?

    - by allyourcode
    I was expecting to find this in Java's LinkedList, since the point of linked lists is to be able to efficiently insert (and remove) anywhere (assuming you have some kind of pointer to the location where you want to insert or remove). I'm not finding anything in the API though. Am I overlooking something? The closest thing I can find to this are the add and remove method in ListIterator. This has some limitations though. In particular, other iterators become invalid as soon as the underlying LinkedList is modified via remove, according to the API. This is born out in my tests as well; the following program results in a IllegalStateException: import java.util.*; public class RemoveFromLinkedList { public static void main(String[] args) { LinkedList<Integer> myList= new LinkedList<Integer>(); for (int i = 0; i < 10; ++i) { myList.add(i); } ListIterator<Integer> i1 = myList.listIterator(); ListIterator<Integer> i2 = myList.listIterator(); for (int i = 0; i < 3; ++i) { i1.next(); i2.next(); } System.out.println("i1.next() should be 3: " + i1.next()); i1.remove(); i1.remove(); // Exception! System.out.println("i2.next() should be 5: " + i2.next()); } } Ideally, what I'm expecting is something like this: // In my imagination only. This is the way Java actually works, afaict. // Construct two insertion/deletion points in LinkedList myLinkedList. myIterator = myLinkedList.iterator(); for (...) { myIterator.next(); } start = myIterator.clone(); for (...) { myIterator.next(); } // Later... after = myLinkedList.spliceAfter(myIterator, someOtherLinkedList); // start, myIterator, and after are still all valid; thus, I can do this: // Removes everything I just spliced in, as well as some other stuff before that. myLinkedList.remove(start, after); // Now, myIterator is invalid, but not start, nor after. C++ has something like this for its list class (template). Only iterators pointing to moved elements become invalidated, not ALL iterators.

    Read the article

< Previous Page | 61 62 63 64 65 66 67 68 69 70 71 72  | Next Page >