Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9247823
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 18, 20262026-06-18T09:49:53+00:00 2026-06-18T09:49:53+00:00

This code takes 9 minutes to run for a set of 5,600 objects: public

  • 0

This code takes 9 minutes to run for a set of 5,600 objects:

public Set<UnDirectedPair<T>> getAllUndirectedPairs(Set<T> setObjects) {
    Set<T> setObjectsProcessed = new TreeSet();
    Set<UnDirectedPair<T>> setPairs;
    setPairs = new TreeSet();
    Iterator<T> setObjectsIteratorA = setObjects.iterator();
    Iterator<T> setObjectsIteratorB;
    T currTA;
    T currTB;
    while (setObjectsIteratorA.hasNext()) {
        currTA = setObjectsIteratorA.next();
        setObjectsProcessed.add(currTA);
        setObjectsIteratorB = setObjects.iterator();
        while (setObjectsIteratorB.hasNext()) {
            currTB = setObjectsIteratorB.next();
            if (!setObjectsProcessed.contains(currTB) && !currTA.equals(currTB)) {
                setPairs.add(new UnDirectedPair(currTA, currTB));
            }
        }
        setObjectsProcessed.add(currTA);
    }
    return setPairs;

}

Looking for a way to dramatically reduce the running time… ideas?

[BACKGROUND]
The set contains Persons. There are duplicates in the set (same persons, but with slightly different attributes because errors at input time). I have methods which take 2 Persons and make the necessary corrections. So, as a preliminary step, I need to create a Set of Pairs of (Person, Person) which will be fed to these methods.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-18T09:49:54+00:00Added an answer on June 18, 2026 at 9:49 am

    Thanks for good suggestions.

    The basic impairment was my class UnDirectedPair which had expensive equals and compareTo methods. I replaced it with a stripped bare Pair class.
    This got the code to run in approx 10s.

    Still, using operations on sets seemed costly. With @mawia suggestion modified a bit, sets can be left completely out of the picture. The final code runs in under 2 seconds instead of 9mn 40s – returning a list of 19,471,920 Pair objects!!

    public List<Pair<T>> getAllUndirectedPairsAsList(Set<T> setObjects) {
        List<T> listObjects = new ArrayList();
        listObjects.addAll(setObjects);
    
        List<Pair<T>> listPairs = new ArrayList();
        Iterator<T> listIterator1 = listObjects.listIterator();
        Iterator<T> listIterator2;
        int count = 1;
        T object1;
        while (listIterator1.hasNext()) {
            object1 = listIterator1.next();
            listIterator2 = listObjects.listIterator(count++);
            while (listIterator2.hasNext()) {
                listPairs.add(new Pair(object1, listIterator2.next()));
            }
        }
        return listPairs;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This code takes an extremely long time to run (more than 10 minutes). Is
I have code, which i want to run, this takes a few mins so
The following C# code takes 5 minutes to run: int i = 1; string
This code takes 3 seconds on Chrome and 6s on Firefox. If I write
Problem Hello all! I have this code which takes my jpg image loops through
i found this code at activestate, it takes a string and prints permutations of
I have this small piece of code that basically takes a list and runs
I get this error: TypeError: object.__init__() takes no parameters when running my code, I
I would like to optimize the following code in R. This loop takes a
Take this code into consideration: Proxy p = new Proxy(Type.SOCKS, new InetSocketAddress(proxyURL, port)); try

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.