I'm trying to get the last added item in an ArrayList to compare it to the next item I'm about to add to it.  If they are equal, continue. Like:  if (stringArray.get(stringArray.IndexOfLastItemAdded()) == compareLastItemToThis) {     continue; } else {     stringArray.add(compareLastItemToThis); }   I know IndexOfLastItemAdded doesn't exist, but is there something similar to it?
120888
How can I get the last value of an ArrayList?  I don't know the last index of the ArrayList.
22593
I would like to compare two collections (in C#), but I'm not sure of the best way to implement this efficiently.  I've read the other thread about , but it's not exactly what I'm looking for.  In my case, two collections would be equal if they both contain the same items (no matter the order).  Example:  collection1 = {1, 2, 3, 4}; collection2 = {2, 4, 1, 3};  collection1 == collection2; // true   What I usually do is to loop through each item of one collection and see if it exists in the other collection, then loop through each item of the other collection and see if it exists in the first collection. (I start by comparing the lengths).  if (collection1.Count != collection2.Count)     return false; // the collections are not equal  foreach (Item item in collection1) {     if (!collection2.Contains(item))         return false; // the collections are not equal }  foreach (Item item in collection2) {     if (!collection1.Contains(item))         return false; // the collections are not equal }  return true; // the collections are equal   However, this is not entirely correct, and it's probably not the most efficient way to do compare two collections for equality.  An example I can think of that would be wrong is:  collection1 = {1, 2, 3, 3, 4} collection2 = {1, 2, 2, 3, 4}   Which would be equal with my implementation. Should I just count the number of times each item is found and make sure the counts are equal in both collections?    The examples are in some sort of C# (let's call it pseudo-C#), but give your answer in whatever language you wish, it does not matter.  Note: I used integers in the examples for simplicity, but I want to be able to use reference-type objects too (they do not behave correctly as keys because only the reference of the object is compared, not the content).
61512
I have an ArrayList&lt;String&gt; that I'd like to return a copy of.  ArrayList has a clone method which has the following signature:  public Object clone()   After I call this method, how do I cast the returned Object back to ArrayList&lt;String&gt;?
93651
I want to compare 2 arrays of objects in JavaScript code.  The objects have 8 total properties, but each object will not have a value for each, and the arrays are never going to be any larger than 8 items each, so maybe the brute force method of traversing each and then looking at the values of the 8 properties is the easiest way to do what I want to do, but before implementing, I wanted to see if anyone had a more elegant solution. Any thoughts?
79063
I have an ArrayList of objects in Java.  The objects have four fields, two of which I'd use to consider the object equal to another.  I'm looking for the most efficient way, given those two fields, to see if the array contains that object.  The wrench is that these classes are generated based on XSD objects, so I can't modify the classes themselves to overwrite the .equals.    Is there any better way than just looping through and manually comparing the two fields for each object and then breaking when found?  That just seems so messy, looking for a better way.  Edit: the ArrayList comes from a SOAP response that is unmarshalled into objects.
66606
I'm working on a batch which getting a params from another batch in the finish method.  The Params are :    A Map - Map&lt;Sobject,Set&lt;String&gt;&gt; A Set -  Set&lt;String&gt;   I lost the values of my Map on the second run of the execution method - Means - Map.get(Sobject) returned with null although it had values in it.  That happened only within the second to the last run of the batch (from the second till the end of the chunks).  The first chunk getting the values as expected.  I guess it could be because defined a Sobject as a Key in a Map is not Best Practice because Hashing issue - Because the second param that I'm sending to the batch is a Set&lt;String&gt; - And it keeps its values for all the chunks.   Because of this issue, I decided to send a Set&lt;Id&gt; of all the Sobjects from the first batch, and retrieve the records in the second batch with SOQL query. and I wanted to know what are the best practices to do so.  the queryLocatoer in the Start method is needed to go over another Sobject without any related to the Sobject that I sent.  Where can I put this Query? Can I put it inside the Constructor and assign it to a global variable? Inside the Start method before I set the query for the queryLocator? - since it always will be the same results, I don't want to put it on the execute method.  What do you think? Why we have hashing issue when the key of a Map is a Sobject?  Thanks!
122930
I'm comparing two list given in the list to see if the item.name exists in both for loop. If not then add into a list to show the error for the missing names.  set&lt;id&gt; setAssetIds = new set&lt;id&gt;(); list&lt;Asset_Store__c&gt;  assets = [select id,name......]; for(Asset_Store__c item : assets ) {     setAssetIds.add(item.id);  }   list&lt;Meter__c&gt;  meters = [select id,name......where id in : setAssetIds];  //now comparing the two lists for(Asset_Store__c a : assets) {    for(Meter__c m : meters)    {      if(a.Name != m.Name)      {        //not matched...        break;      }     } }   the problem with the above approach is that, its not finding the correct name.
9629
I use a lot of lists and arrays but I have yet to come across a scenario in which the array list couldn't be used just as easily as, if not easier than, the linked list.  I was hoping someone could give me some examples of when the linked list is notably better.
31203
Is there a package that provides a command for testing whether a string is in a list?  I saw several answers that define their own commands to perform this or similar tasks, but I prefer a "self-evolving", and well-documented solution for this kind of tasks.  More precisely, the command should be something like this  \IfStringInList{string}{list}{DoThisIfTrue}{DoThisIfFalse}   For instance  \IfStringInList{Paul}{George,John,Paul,Ringo}{Beat it}{Roll it}   EDIT:  I'm not against defining commands.  I expected thas this natural functionality was present in a ready-to-use package, that can be accessed in a very simple way.
34898
I'd like to be able to resume an enumerated list, continuing the old numbering, after some intervening text which should not be formatted like a list item.  Is there a nice way to do this?    In particular, I don't want to start a second list with a hard-coded initial counter value, because that will break if I change the number of items in the first list.
6052
I have a list of items   John ID Matt ID John ID Scott ID Matt ID John ID Lucas ID   I want to shove them back into a list like so which also means I want to sort by the highest number of duplicates.   John ID 3 Matt ID 2 Scott ID 1 Lucas ID 1   Let me know how I can do this with LINQ and C#.  Thanks All  EDIT 2 Showing Code:      List&lt;game&gt; inventory = new List&lt;game&gt;();     drinkingforDataContext db = new drinkingforDataContext();     foreach (string item in tbTitle.Text.Split(' '))     {          List&lt;game&gt; getItems = (from dfg in db.drinkingfor_Games                                where dfg.game_Name.Contains(tbTitle.Text)                                select new game                                {                                    gameName = dfg.game_Name,                                    gameID = Boomers.Utilities.Guids.Encoder.EncodeURLs(dfg.uid)                                }).ToList&lt;game&gt;();          for (int i = 0; i &lt; getItems.Count(); i++)         {             inventory.Add(getItems[i]);         }     }      var items = (from xx in inventory                  group xx by xx into g                  let count = g.Count()                  orderby count descending                  select new                     {                         Count = count,                         gameName = g.Key.gameName,                         gameID = g.Key.gameID                     });      lvRelatedGames.DataSource = items;     lvRelatedGames.DataBind();   This query displays these results:   1 hello world times 1 hello world times 1 Hello World. 1 hello world times 1 hello world times 1 hello world times 1 Hello World. 1 hello world times   It gives me the count and name, but it doesn't give me the ID of the game....  It should display:   6 hello world times   234234 2 Hello World.  23432432
7306
How can I clone an ArrayList and also clone its items in Java?  For example I have:  ArrayList&lt;Dog&gt; dogs = getDogs(); ArrayList&lt;Dog&gt; clonedList = ....something to do with dogs....   And I would expect that objects in clonedList are not the same as in dogs list.
16134
I have two complex (i.e. objects with string, int, double, List and other home made data type) objects of the same type. I would like to compare the content of both of them to ensure that they are identical. Note: The object doesn't implement .Equals (I have no control on that) and doesn't implement IComparable.   Is there a generic way (reflection?) to compare the content of the two objects?  Thanks!
56415
I have four foreach loops that iterate through the collections and based on a condition do something.   Here is the code that I am writing now:  boolean breakFlag = false; String valueFromObj2 = null; String valueFromObj4 = null; for(Object1 object1: objects){   for(Object2 object2: object1){     // I get some value from object2     valueFromObj2 = object2.getSomeValue();     for(Object3 object3 : object2){       for(Object4 object4: object3){        // Finally I get some value from Object4.        valueFromObj4 = object4.getSomeValue();        // Compare with valueFromObj2 to decide either to break all the foreach loop        breakFlag = compareTwoVariable(valueFromObj2, valueFromObj4 );        if(breakFlag){break;}       } // fourth loop ends here       if(breakFlag){break;}     } // third loop ends here     if(breakFlag){break;}   } // second loop ends here   if(breakFlag){break;} } // first loop ends here   The main object (objects in the code) comes from a third-party provider SDK, so I cannot change anything on that portion. I want to ask the Stack&nbsp;Overflow community if there is a better approach to break all the four foreach loops. Or if there is any other way to refactor this code to make it more readable and maintainable.
4045
What is the most efficient way to write the old-school:  StringBuilder sb = new StringBuilder(); if (strings.Count &gt; 0) {     foreach (string s in strings)     {         sb.Append(s + ", ");     }     sb.Remove(sb.Length - 2, 2); } return sb.ToString();   ...in LINQ?
31237
How can I do this fast?  Sure I can do this:  static bool ByteArrayCompare(byte[] a1, byte[] a2) {     if (a1.Length != a2.Length)         return false;      for (int i=0; i&lt;a1.Length; i++)         if (a1[i]!=a2[i])             return false;      return true; }   But I'm looking for either a  function or some highly optimized proven way to do this.  java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2);   works nicely, but it doesn't look like that would work for x64.  Note my super-fast answer .
121
I always thought Java uses pass-by-reference. However, I've seen a couple of blog posts (for example, ) that claim that it isn't (the blog post says that Java uses pass-by-value). I don't think I understand the distinction they're making. What is the explanation?