(පැරණි නූල්, නමුත් ගුවා හෝ වෙනත් ලිබ් සහ වෙනත් විස්තර කිසිවක් සඳහන් නොකරන පරිදි ශත 2 ක් පමණි)
ඔබට හැකි නම්, ගුවා භාවිතා කරන්න
මෙම ෂෙනානිගන් බොහෝ සෙයින් සරල කරන ගුවා මාර්ගය පෙන්වා දීම වටී:
භාවිතය
වෙනස් කළ නොහැකි ලැයිස්තුවක් සඳහා
භාවිතා ImmutableListපන්තිය හා එහි of()සහ copyOf()කර්මාන්ත ශාලාව ක්රම (අංග ශූන්ය විය නොහැකි) :
List<String> il = ImmutableList.of("string", "elements"); // from varargs
List<String> il = ImmutableList.copyOf(aStringArray); // from array
විකෘති ලැයිස්තුවක් සඳහා
භාවිතා Listsපන්තිය හා එහි newArrayList()කර්මාන්ත ශාලාව ක්රම:
List<String> l1 = Lists.newArrayList(anotherListOrCollection); // from collection
List<String> l2 = Lists.newArrayList(aStringArray); // from array
List<String> l3 = Lists.newArrayList("or", "string", "elements"); // from varargs
වෙනත් පංතිවල දත්ත ව්යුහයන් සඳහා සමාන ක්රම කරුණාකර සටහන් කරන්න Sets.
ප්රධාන ආකර්ෂණය වනුයේ ගයිවා කර්මාන්තශාලා ක්රම භාවිතා කිරීම මඟින් බොහෝ විට වර්ග අනුමාන කිරීමට ඉඩ සලසන බැවින් , වර්ගය-ආරක්ෂාව සඳහා ජනකතා නිසා ඇති වන කැළඹිලි අවම කිරීමයි . කෙසේ වෙතත්, ජාවා 7 නව දියමන්ති ක්රියාකරු සමඟ පැමිණි බැවින් මෙම තර්කය අඩු ජල ප්රමාණයක් දරයි.
නමුත් එය එකම හේතුව නොවේ (සහ ජාවා 7 තවමත් සෑම තැනකම නොමැත): කෙටිකාලීන වාක්ය ඛණ්ඩය ද ඉතා පහසු වන අතර, ඉහත දැක්වෙන පරිදි ආරම්භක ක්රම මඟින් වඩාත් ප්රකාශන කේත ලිවීමට ඉඩ ලබා දේ. ඔබ එක් ජාවා ඇමතුමකින් වත්මන් ජාවා එකතුව සමඟ 2 ක් ගනී.
ඔබට නොහැකි නම් ...
වෙනස් කළ නොහැකි ලැයිස්තුවක් සඳහා
මෙම JDK ගේ භාවිතා Arraysපන්තිය හා එහි asList()සමඟ ඔතා කර්මාන්ත ක්රමය, Collections.unmodifiableList():
List<String> l1 = Collections.unmodifiableList(Arrays.asList(anArrayOfElements));
List<String> l2 = Collections.unmodifiableList(Arrays.asList("element1", "element2"));
සඳහා ආපසු වර්ගය බව සටහන asList()යනු Listකොන්ක්රීට් භාවිතා ArrayListක්රියාත්මක කිරීම, නමුත් එය එසේ නොවේ java.util.ArrayList . එය අභ්යන්තර වර්ගයකි, එය අනුකරණය කරන ArrayListනමුත් ඇත්ත වශයෙන්ම සම්මත කළ අරාව සෘජුවම යොමු කර එය "හරහා ලිවීමට" සලස්වයි (වෙනස් කිරීම් අරාවෙහි පිළිබිඹු වේ).
එය Listහුදෙක් API දීර් ing කිරීම මගින් සමහර API ක්රම වෙනස් කිරීම තහනම් කරයි AbstractList(එබැවින්, මූලද්රව්ය එකතු කිරීම හෝ ඉවත් කිරීම සහාය නොදක්වයි), කෙසේ වෙතත් එය ඇමතුම් වලට set()මූලද්රව්ය අභිබවා යාමට ඉඩ දෙයි . මේ අනුව මෙම ලැයිස්තුව සැබවින්ම වෙනස් කළ නොහැකි අතර ඇමතුමක් asList()ඔතා තිබිය යුතුය Collections.unmodifiableList().
ඔබට විකෘති ලැයිස්තුවක් අවශ්ය නම් ඊළඟ පියවර බලන්න.
විකෘති ලැයිස්තුවක් සඳහා
ඉහත ආකාරයටම, නමුත් සත්යයකින් ඔතා java.util.ArrayList:
List<String> l1 = new ArrayList<String>(Arrays.asList(array)); // Java 1.5 to 1.6
List<String> l1b = new ArrayList<>(Arrays.asList(array)); // Java 1.7+
List<String> l2 = new ArrayList<String>(Arrays.asList("a", "b")); // Java 1.5 to 1.6
List<String> l2b = new ArrayList<>(Arrays.asList("a", "b")); // Java 1.7+
අධ්යාපනික අරමුණු සඳහා: හොඳ ඔල් අත්පොත
// for Java 1.5+
static <T> List<T> arrayToList(final T[] array) {
final List<T> l = new ArrayList<T>(array.length);
for (final T s : array) {
l.add(s);
}
return (l);
}
// for Java < 1.5 (no generics, no compile-time type-safety, boo!)
static List arrayToList(final Object[] array) {
final List l = new ArrayList(array.length);
for (int i = 0; i < array.length; i++) {
l.add(array[i]);
}
return (l);
}