Assuming "Mango|Banana|Pear|Orange" fixed, I would go about it "like that":
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
public class Test {
    public static void main(String[] args) {
        System.out.println(sortIndiv());
    }
    // choose "richer" datastructure: fruit name as key, sort order as value:
    public static final Map<String, Integer> VALID_FRUITS = Map.of(
      "Mango", 0, 
      "Banana", 1,
      "Pear", 2,
      "Orange", 3);//want to maintain this order
    // Map.of(k,v,k,v,...) -> java >= 9
    // a "more generalized" result type: Collection<String>
    public static Collection<String> sortIndiv() {
        List<String> retriveFruits = Arrays.asList(
                new String[]{"Pear",
                    "Apple", "Banana", "Orange", "Mango", "Papaya"}
        ); // fix values for test purpose, otherwise ... dao.fruitList ...
        //here "the magic"...
        //A (self-sorting) TreeSet with a custom comparator
        //..using VALID_FRUITS:
        Collection<String> result = new TreeSet<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return VALID_FRUITS.get(o1).compareTo(VALID_FRUITS.get(o2)); // == FRUITS.get(o1) - FRUITS.get(o2);
            }
        });
        // iterate: O(n)
        for (String fruit : retriveFruits) {
            // filter valids:
            if (VALID_FRUITS.containsKey(fruit)) {
                // add to result O(log(n))!
                result.add(fruit);
            }
            //so after sorting names should maintian the order final String Fruits ="Mango|Banana|Pear|Orange"; how do I achieve this
        }
        //done!
        return result;
    }
}
Output:
[Mango, Banana, Pear, Orange]
If Collection is not an acceptable return/result type (esp. when result contains/should contain duplicates, the TreeSet approach is not acceptable), then ArrayList and sort() can do the job comparably efficient (and allow duplicates):
import java.util.*;
public class Test {
    public static void main(String[] args) {
        List<String> retriveFruits = Arrays.asList(
                new String[]{"Pear",
                    "Apple", "Banana", "Orange", "Mango", "Papaya", "Mango", "Mango"}
        ); // dao.fruitList ...
        System.out.println(sortIndivSortedSet(retriveFruits));
        System.out.println(sortIndivQuickSort(retriveFruits));
    }
    public static final Map<String, Integer> VALID_FRUITS = Map.of("Mango", 0, "Banana", 1, "Pear", 2, "Orange", 3);
    //want to maintain this order
    private static Comparator<String> customComparator() {
        return new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return VALID_FRUITS.get(o1).compareTo(VALID_FRUITS.get(o2)); // == FRUITS.get(o1) - FRUITS.get(o2);
            }
        };
    }
    public static Collection<String> sortIndivSortedSet(List<String> retriveFruits) {
        Collection<String> result = new TreeSet<>(customComparator());
        for (String fruit : retriveFruits) {
            if (VALID_FRUITS.containsKey(fruit)) {
                result.add(fruit);
            }
        }
        return result;
    }
    public static List<String> sortIndivQuickSort(List<String> retriveFruits) {
       List<String> result = new ArrayList<>(retriveFruits.size());
       // O(n) 
        for (String fruit : retriveFruits) {
            if (VALID_FRUITS.containsKey(fruit)) {
                // x
                // O(1)
                result.add(fruit);
            }
        }
        // +
        // O(n log(n))
        result.sort(customComparator());
        return result;
    }
}
Ouput:
[Mango, Banana, Pear, Orange]
[Mango, Mango, Mango, Banana, Pear, Orange]