Kaip sukurti naują sąrašą „Java“

Sukurti Set kaip:

 Set myset = new HashSet() 

Kaip sukurti java List ?

630
13 мая '09 в 18:12 2009-05-13 18:12 user93796 yra nustatytas gegužės 13, '09, 18:12 pm 2009-05-13 18:12
@ 24 atsakymai
 List myList = new ArrayList(); 

arba su generiniais vaistais („ Java 7“ ar naujesnė versija)

 List<MyType> myList = new ArrayList<>(); 

arba su generiniais vaistais (senesnės „Java“ versijos)

 List<MyType> myList = new ArrayList<MyType>(); 
832
13 мая '09 в 18:15 2009-05-13 18:15 atsakymas duotas Danui Vintonui gegužės 13 d., 09:18, 2009-05-13 18:15

Be to, jei norite sukurti sąrašą, kuriame yra dalykų (nors tai bus fiksuotas dydis):

border=0
 List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You"); 
392
13 мая '09 в 18:18 2009-05-13 18:18 atsakė Aaronui Maenpui 2009 m. gegužės 13 d., 18:18, 2009-05-13 18:18

Leiskite apibendrinti ir pridėti kažką:

JDK

 1. new ArrayList<String>(); 2. Arrays.asList("A", "B", "C") 

Guava

 1. Lists.newArrayList("Mike", "John", "Lesly"); 2. Lists.asList("A","B", new String [] {"C", "D"}); 

Fiksuotas sąrašas

 1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B"))); 2. ImmutableList.builder() // Guava .add("A") .add("B").build(); 3. ImmutableList.of("A", "B"); // Guava 4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C")); // Guava 

Tuščias nepakeistas sąrašas

 1. Collections.emptyList(); 2. Collections.EMPTY_LIST; 

Simbolių sąrašas

 1. Lists.charactersOf("String") // Guava 2. Lists.newArrayList(Splitter.fixedLength(1).split("String")) // Guava 

Sveikų skaičių sąrašas

 Ints.asList(1,2,3); // Guava 
154
29 мая '13 в 22:48 2013-05-29 22:48 atsakymą pateikė Sergii Shevchyk gegužės 29 d., 13 d., 10:48 2013-05-29 22:48

Pirmiausia perskaitykite tai ir perskaitykite tai . 9 kartus iš 10 naudosite vieną iš šių dviejų įgyvendinimų.

Tiesą sakant, tiesiog perskaitykite „ Sun“ vadovą struktūrizuotoms rinkoms .

30
13 мая '09 в 18:17 2009-05-13 18:17 atsakymą pateikė Adam Jaskiewicz , gegužės 13 d., 09:18 , 2009-05-13 18:17
 //simple example creating a list form a string array String[] myStrings = new String[] {"Elem1","Elem2","Elem3","Elem4","Elem5"}; List mylist = Arrays.asList(myStrings ); //getting an iterator object to browse list items Iterator itr= mylist.iterator(); System.out.println("Displaying List Elements,"); while(itr.hasNext()) System.out.println(itr.next()); 
22
13 мая '09 в 18:26 2009-05-13 18:26 atsakymą pateikė Blerta , gegužės 13 d. , 09:18 , 2009-05-13 18:26

Pradedant „Java 7“, įvedate išėjimą, kad sukurtumėte bendrai naudojamą egzempliorių , todėl nereikia kopijuoti bendrųjų parametrų užduoties dešinėje pusėje:

 List<String> list = new ArrayList<>(); 

Fiksuoto dydžio sąrašą galima apibrėžti taip:

 List<String> list = Arrays.asList("foo", "bar"); 

Jei norite keisti sąrašus, galite naudoti „ Guava“ biblioteką:

 List<String> list = ImmutableList.of("foo", "bar"); 
21
21 нояб. atsakymą pateikė Vitalii Fedorenko 21 nov. 2011-11-21 17:53 '11, 17:53, 2011-11-21 17:53

Sąrašas yra tik sąsaja, pvz., „ Set“ .

Kaip „HashSet“, tai yra „Set“ diegimas, turintis tam tikrų savybių, susijusių su pridedant / ieškant / pašalinant našumą, „ArrayList“ yra paprastas sąrašo įgyvendinimas.

Jei pažvelgsite į atitinkamų sąsajų dokumentus, rasite „Visos žinomos diegimo klasės“, ir galite nuspręsti, kuris iš jų yra tinkamesnis jūsų poreikiams.

Labiausiai tikėtina, kad tai yra „ ArrayList“ .

20
13 мая '09 в 18:55 2009-05-13 18:55 atsakymą pateikė Sorin Mocanu gegužės 13 d., 09:18, 2009-05-13 18:55

„Java“ 8

Jei norite sukurti neužpildytą fiksuoto dydžio sąrašą (tokios operacijos kaip pridėjimas, trynimas ir kt. Nepalaikoma):

 List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported 

Jei norite sukurti nebaigtą keičiamąjį sąrašą:

 List<Integer> list = new ArrayList<>(Arrays.asList(3, 4)); 

„Java“ 9

Naudojant naujus gamyklos metodus, List.of(...) :

 List<Integer> immutableList = List.of(1, 2); List<Integer> mutableList = new ArrayList<>(List.of(3, 4)); 

„Java“ 10

Vietinio kintamojo tipo išvados naudojimas :

 var list1 = List.of(1, 2); var list2 = new ArrayList<>(List.of(3, 4)); var list3 = new ArrayList<String>(); 

Ir vadovaukitės geriausia patirtimi ...

Nenaudokite žaliavų.

Pradedant „Java 5“, generiniai vaistai buvo kalbos dalis - juos turėtumėte naudoti:

 List<String> list = new ArrayList<>(); // Good, List of String List list = new ArrayList(); // Bad, don't do that! 

Programa sąsajoms

Pavyzdžiui, užprogramuokite sąsajos List :

 List<Double> list = new ArrayList<>(); 

Vietoj:

 ArrayList<Double> list = new ArrayList<>(); // This is a bad idea! 
18
08 февр. Atsakymas pateikiamas Oleksandrui 08 Feb. 2018-02-08 00:12 '18 prie 0:12 2018-02-08 00:12

List yra sąsaja, panaši į „ Set ir turi „ ArrayList ir „ LinkedList kaip bendrosios paskirties įgyvendinimą .

Galime sukurti tokį sąrašą:

  List<String> arrayList = new ArrayList<>(); List<String> linkedList = new LinkedList<>(); 

Taip pat galime sukurti fiksuoto dydžio sąrašą, pvz .:

 List<String> list = Arrays.asList("A", "B", "C"); 

Beveik visada naudosime „ ArrayList o ne įgyvendinsime „ LinkedList :

  1. LinkedList naudoja daug vietos objektams ir neveikia gerai, kai turime daug elementų.
  2. Bet kokia „ LinkedList indeksuota operacija laiko O (n) laiką, lyginant su „O“ (1) „ ArrayList .
  3. Daugiau informacijos rasite šioje nuorodoje .

Aukščiau pateikto „ Arrays.asList sukurto sąrašo struktūra negali būti pakeista, tačiau jos elementai gali būti keičiami.

Java 8

Pagal dokumentąCollections.unmodifiableList metodas grąžina nekintamą nurodyto sąrašo vaizdą. Mes galime jį gauti kaip:

 Collections.unmodifiableList(Arrays.asList("A", "B", "C")); 

„Java 9“

Jei naudojame „ Java 9“, tada:

 List<String> list = List.of("A", "B"); 

„Java 10“

Tuo atveju, jei mes esame „Java 10“, „ Collectors.unmodifiableList metodas grąžins „Java 9“ pateikto tikrai neį keičiamo sąrašo egzempliorių. Patikrinkite šį atsakymą, jei norite gauti daugiau informacijos apie skirtumus „ Collections.unmodifiableList ir „ Collectors.unmodifiableList “ „ Java 10“ .

14
22 июня '15 в 9:06 2015-06-22 09:06 atsakymas pateikiamas i_am_zero birželio 22 d., 15 val. 9:06 2015-06-22 09:06
 List list = new ArrayList(); 

Arba generinių vaistų pagalba

 List<String> list = new ArrayList<String>(); 

Žinoma, galite pakeisti eilutę su bet kokio tipo kintamuoju, pvz., „Integer“.

9
13 мая '09 в 18:15 2009-05-13 18:15 atsakymą pateikė Paulo Guedesas gegužės 13 d. 09:18:15 2009-05-13 18:15

Kartais - bet tik labai retai - vietoj naujo „ArrayList“ gali prireikti naujo „LinkedList“. Pradėkite nuo „ArrayList“ ir, jei turite našumo problemų ir įrodymų, kad sąrašas yra problema, taip pat pridėkite ir ištrinkite šį sąrašą, tada - ne anksčiau - pereikite prie „LinkedList“ ir patikrinkite, ar padėtis pagerėja. Bet dažniausiai laikykitės ArrayList, ir viskas bus gerai.

8
13 мая '09 в 18:29 2009-05-13 18:29 atsakė Carl Manasterui gegužės 13 d. 09:18 2009-05-13 18:29

Vienas pavyzdys:

 List somelist = new ArrayList(); 

Galite peržiūrėti sąrašo javadoką ir surasti visas žinomas diegimo klases „Sąsajai“, kurios yra įtrauktos į „Java“ api.

7
13 мая '09 в 18:14 2009-05-13 18:14 Atsakymą davė Alexas B gegužės 13 d., 09:18, 2009-05-13 18:14

Naudodami „ Google“ kolekcijas , sąrašų klasėje galite naudoti šiuos metodus

 import com.google.common.collect.Lists; // ... List<String> strings = Lists.newArrayList(); List<Integer> integers = Lists.newLinkedList(); 

Yra perkrovos inicijuoti ir inicijuoti varargus iš Iterable<T> .

Šių metodų privalumas yra tas, kad jums nereikia aiškiai nurodyti bendro parametro, kaip tai būtų daroma su konstruktoriumi - kompiliatorius jį nustatys iš kintamojo tipo.

7
04 авг. Ben Lings atsakymas rugpjūčio 04 d 2009-08-04 14:55 '09 at 14:55 2009-08-04 14:55
 List<Object> nameOfList = new ArrayList<Object>(); 

Turite importuoti List ir „ ArrayList .

6
28 янв. atsakymas duotas jp093121 sausis 28 2013-01-28 19:39 '13, 19:39, 2013-01-28 19:39

Naudodami „Java 9“, galite sukurti šiuos pakeitimus, kad sukurtumėte nepakeistą List :

 List<Integer> immutableList = List.of(1, 2, 3, 4, 5); List<Integer> mutableList = new ArrayList<>(immutableList); 
6
28 апр. Jacob G. atsakymas, balandžio 28 d 2017-04-28 03:20 '17 at 3:20 2017-04-28 03:20

Yra daug būdų sukurti rinkinį ir sąrašą. „HashSet“ ir „ArrayList“ yra tik du pavyzdžiai. Šiais laikais taip pat yra gana paplitęs generinių vaistų naudojimas su kolekcijomis. Siūlau pažvelgti į tai, ką jie

Tai geras įvadas į „Java“ įmontuotas kolekcijas. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html

5
13 мая '09 в 23:01 2009-05-13 23:01 atsakymą pateikė Peter Lawrey gegužės 13 d., 09:01, 2009-05-13 23:01

Daugiau galimybių tą patį daryti su „Java 8“, ne geriau, ne blogiau, tik kitaip, ir jei norite atlikti papildomą darbą su sąrašais, srautai suteiks jums daugiau alternatyvų (filtruoti, rodyti, sumažinti ir tt)

 List<String> listA = Stream.of("a", "B", "C").collect(Collectors.toList()); List<Integer> listB = IntStream.range(10, 20).boxed().collect(Collectors.toList()); List<Double> listC = DoubleStream.generate(() -> { return new Random().nextDouble(); }).limit(10).boxed().collect(Collectors.toList()); LinkedList<Integer> listD = Stream.iterate(0, x -> x++).limit(10).collect(Collectors.toCollection(LinkedList::new)); 
5
30 дек. Atsakymą pateikė „ Whyem“ . 2014-12-30 17:51 '15, 17:51 2014-12-30 17:51

Pasirinkę galite naudoti dvigubo spustelėjimo inicijavimą:

 List<String> list = new ArrayList<String>(){{ add("a"); add("b"); }}; 
5
06 авг. atsakymas duotas angry_gopher 06 rug . 2013-08-06 22:13 '13, 10:13 pm 2013-08-06 22:13
 List arrList = new ArrayList(); 

Kuo geriau naudoti generinius vaistus, kaip siūloma toliau:

 List<String> arrList = new ArrayList<String>(); arrList.add("one"); 

Jei naudojate „LinkedList“.

 List<String> lnkList = new LinkedList<String>(); 
5
03 июля '14 в 15:52 2014-07-03 15:52 atsakymą pateikė Rohit Goyal liepos 3 d. 14 d. 15:52 2014-07-03 15:52

Žemiau yra keletas būdų sukurti sąrašus.

  • Tai sudarys sąrašą su fiksuotu dydžiu, elementų pridėjimas / ištrynimas neįmanomas, bandant tai ištrinti java.> .

    List<String> fixedSizeList = Arrays.asList(new String[] {"Male", "Female"});


  • Kita versija yra paprastas sąrašas, kuriame galite pridėti / pašalinti bet kokį skaičių elementų.

    List<String> list = new ArrayList<>();


  • Štai kaip sukurti „ LinkedList “ java. Jei reikia dažnai įterpti / ištrinti elementus sąraše, vietoj „ ArrayList turėtumėte naudoti „ LinkedList

    List<String> linkedList = new LinkedList<>();

4
14 июля '17 в 9:37 2017-07-14 09:37 atsakymą pateikė Jobin Joseph, liepos 14 d., 17 val. 9:37 2017-07-14 09:37

Naudodami „ Eclipse“ rinkinius galite sukurti tokį sąrašą:

 List<String> list1 = Lists.mutable.empty(); List<String> list2 = Lists.mutable.of("One", "Two", "Three"); 

Jei jums reikia fiksuoto sąrašo:

 ImmutableList<String> list3 = Lists.immutable.empty(); ImmutableList<String> list4 = Lists.immutable.of("One", "Two", "Three"); 

Galite išvengti automatinio bokso naudojant primityvius sąrašus. Štai kaip galite sukurti int sąrašus:

 MutableIntList list5 = IntLists.mutable.empty(); MutableIntList list6 = IntLists.mutable.of(1, 2, 3); ImmutableIntList list7 = IntLists.immutable.empty(); ImmutableIntList list8 = IntLists.immutable.of(1, 2, 3); 

Yra visų 8 primityvių variantų.

 MutableLongList longList = LongLists.mutable.of(1L, 2L, 3L); MutableCharList charList = CharLists.mutable.of('a', 'b', 'c'); MutableShortList shortList = ShortLists.mutable.of((short) 1, (short) 2, (short) 3); MutableByteList byteList = ByteLists.mutable.of((byte) 1, (byte) 2, (byte) 3); MutableBooleanList booleanList = BooleanLists.mutable.of(true, false); MutableFloatList floatList = FloatLists.mutable.of(1.0f, 2.0f, 3.0f); MutableDoubleList doubleList = DoubleLists.mutable.of(1.0, 2.0, 3.0); 

Pastaba: esu „Eclipse“ kolekcijų pasiuntinys.

4
10 дек. Craig P. Motlin atsakymas 2015-12-10 19:37 '15, 19:37, 2015-12-10 19:37

Jei jums reikia serializuoto, nekintamo sąrašo su vienu subjektu, kurį galite naudoti:

 List<String> singList = Collections.singletonList("stackoverlow"); 
2
04 авг. atsakymą pateikė erol yeniaras 04 rug . 2018-08-04 00:26 '18 prie 0:26 2018-08-04 00:26

Išbandykite:

 List<String> messages = Arrays.asList("bla1", "bla2", "bla3"); 

Arba:

 List<String> list1 = Lists.mutable.empty(); // Empty List<String> list2 = Lists.mutable.of("One", "Two", "Three"); 
2
18 янв. Gavriel Cohen paskelbė sausio 18 d 2018-01-18 14:50 '18, 14:50 pm 2018-01-18 14:50

Sąrašas gali būti sukurtas bet kuriuo iš šių būdų:

  List list1 = new ArrayList(); List list2 = new Stack(); List list3 = new LinkedList(); List list4 = new Vector(); 
-2
06 окт. Atsakymą pateikė TheRumboJumbo 06 okt. 2015-10-06 16:07 '15 - 16:07 2015-10-06 16:07

Kiti klausimai apie žymes arba Užduoti klausimą