标签: arraylist

java arraylist ensureCapacity无法正常工作

要么我做错了,要么我不理解这种方法是如何工作的.

ArrayList<String> a = new ArrayList<String>();
a.ensureCapacity(200);
a.add(190,"test");
System.out.println(a.get(190).toString());
Run Code Online (Sandbox Code Playgroud)

我原本认为ensureCapacity会让我插入一个索引达到该值的记录.有没有不同的方法来做到这一点?

我在第三行得到一个IndexOutOfBounds错误.

java arraylist

14
推荐指数
2
解决办法
2万
查看次数

Java快速数组列表

我有一个非常简单的问题:

如何在Java上使这段代码更简单:

ArrayList<String> s = new ArrayList<String>();
s.add("str1");
s.add("str hello");
s.add("str bye");
//...
Run Code Online (Sandbox Code Playgroud)

像这样的东西:

ArrayList<String> s = {"a1", "str", "mystr"};
Run Code Online (Sandbox Code Playgroud)

或者那个:

ArrayList<String> s = new ArrayList<String>("a1", "str", "mystr");
Run Code Online (Sandbox Code Playgroud)

或者那个:

ArrayList<String> s = new ArrayList<String>();
s.addAll("a1", "str", "mystr");
Run Code Online (Sandbox Code Playgroud)

或者那个:

ArrayList<String> s = new ArrayList<String>();
s.addAll(new ArrayElements("a1", "str", "mystr"));
Run Code Online (Sandbox Code Playgroud)

我只想要语法提示.谢谢.

java arrays arraylist

14
推荐指数
5
解决办法
1万
查看次数

阵列比arraylist更快吗?

我的直觉说阵列比arraylist更快,因为arraylists是使用在填充/丢失元素时调整大小的数组来实现的.

我只是想确认这是否属实,这意味着如果您知道要保留的元素数量,就没有理由使用arraylist.

java arrays performance arraylist

14
推荐指数
2
解决办法
2万
查看次数

为什么toString()方法在Java中的Array和ArrayList对象之间的工作方式不同

    String[] array = {"a","c","b"};
    ArrayList<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(array);
    System.out.println(list);
Run Code Online (Sandbox Code Playgroud)

list [a, b, c]输出是为了输出array某些地址.当我们想要输出array值时,我们可以使用Arrays.toString(array);哪个就像list.

我只是想知道为什么我们不能toString()直接调用array来获取值.这样做不是更直观和方便吗?什么导致不同的治疗Array和ArrayList?

java arrays arraylist tostring

14
推荐指数
1
解决办法
5万
查看次数

如何对对象的Arraylist进行排序

我有ArrayList,其中包含足球队(Team Team).团队有积分,我想按点数对它们进行排序.

 public class Team {
     private int points;
     private String name;

     public Team(String n)
     {
         name = n;
     }

     public int getPoints
     {
         return points;
     }

     public void addPoints(boolean win)
 {
            if (win==true)
            {
    points = points + 3;
            }

            else if (win==false)
            {
            points = points + 1;
            }

}
 //...
 }
Run Code Online (Sandbox Code Playgroud)

主类:

 List<Team> lteams = new ArrayList<Team>;

 lteams.add(new Team("FC Barcelona"));
 lteams.add(new Team("Arsenal FC"));
 lteams.add(new Team("Chelsea"));

 //then adding 3 points to Chelsea and 1 point to Arsenal

 lteams.get(2).addPoints(true); …
Run Code Online (Sandbox Code Playgroud)

java collections arraylist

14
推荐指数
2
解决办法
6万
查看次数

如何验证HashMap中是否存在值

我有以下HashMap,其中keya是a String,value并由以下内容表示ArrayList:

 HashMap<String, ArrayList<String>> productsMap = AsyncUpload.getFoodMap();
Run Code Online (Sandbox Code Playgroud)

我还在ArrayList<String> foods我的应用程序中实现了另一个.

我的问题是,找出我的第二个HashMap包含特定内容的最佳方法是什么?StringArrayList

我试过没有成功:

Iterator<String> keySetIterator = productsMap.keySet().iterator();
Iterator<ArrayList<String>> valueSetIterator = productsMap.values().iterator();

    while(keySetIterator.hasNext() && valueSetIterator.hasNext()){
        String key = keySetIterator.next();
        if(mArrayList.contains(key)){
            System.out.println("Yes! its a " + key);
        }
    }
Run Code Online (Sandbox Code Playgroud)

java android iterator arraylist hashmap

14
推荐指数
2
解决办法
8万
查看次数

为什么List.Add(E)返回布尔值而List.Add(int,E)返回void?

看看javadoc我看到一个ArrayList有一个重载的add方法:

public boolean add(E e)

将指定的元素追加到此列表的末尾.

和

public void add(int index,E element)

将指定元素插入此列表中的指定位置.将当前位于该位置的元素(如果有)和任何后续元素向右移动(向其索引添加一个元素).

我注意到第一个返回了一段boolean时间,第二个是a void.事实证明,第一个addHAS返回一个boolean因为:

返回:true(由Collection.add(E)指定)

所以我去了Collection.add(E):

布尔加法(E e)

确保此集合包含指定的元素(可选操作).如果此集合因调用而更改,则返回true.(如果此集合不允许重复并且已包含指定的元素,则返回false.)

所以我的问题是,为什么add指定返回boolean而不是void?当我想要的add东西,我希望只做一个操作.

据我所知,还有其他数据结构,与ArrayList相反,不允许重复(例如集合).但即使这样,问题也不可能按照以下方式解决:

public void add(E e){
    if(e is not in set){
        add e;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,如果e集合中的IS没有采取行动.为什么返回a boolean而不是void方法更好?

java collections arraylist

14
推荐指数
1
解决办法
2万
查看次数

LinkedList与ArrayList在维护有序列表时的性能

我想维持一个List<Integer>大小<= 10 ^ 6 的有序.每次添加一个新元素时,我都会调用Collections.sort()方法对列表中的新元素进行排序.据我所知,ArrayList表现要好于LinkedList.但是由于我会sort()经常调用方法,所以我已经明白,linkedList在对列表进行排序时会表现得更好并且将是更好的选择ArrayList,因为没有像ArrayList(array作为底层数据结构使用)的情况那样移动元素.任何更有效的建议.

java sorting linked-list arraylist

14
推荐指数
2
解决办法
2872
查看次数

ArrayList声明与转换

我与Java编程完全脱节,并且正在谷歌的Udacity课程作为复习.我正在浏览Sunshine应用程序的第1课,讲师通过声明一个字符串数组然后将其转换为ArrayList来选择创建虚假数据.

代码如下:

String[] data = {
            "Mon 6/23?- Sunny - 31/17",
            "Tue 6/24 - Foggy - 21/8",
            "Wed 6/25 - Cloudy - 22/17",
            "Thurs 6/26 - Rainy - 18/11",
            "Fri 6/27 - Foggy - 21/10",
            "Sat 6/28 - TRAPPED IN WEATHERSTATION - 23/18",
            "Sun 6/29 - Sunny - 20/7"
    };
    List<String> weatherForecast = new ArrayList<>(Arrays.asList(data));
Run Code Online (Sandbox Code Playgroud)

我想知道使用这种转换方法有什么好处吗?为什么不立即将数据声明为ArrayList:

    ArrayList weatherForecast = new ArrayList();
    weatherForecast.add("Today - Sunny - 88/63");
    weatherForecast.add("Tomorrow - Foggy = 70/46");
    weatherForecast.add("Weds - Cloudy - 72/63");
    weatherForecast.add("Thurs 6/26 - Rainy …
Run Code Online (Sandbox Code Playgroud)

java string arraylist

14
推荐指数
3
解决办法
667
查看次数

与removeIf一起使用时,java.util.Arrays.asList抛出UnsupportedOperationException

我准备在接下来的2个月进行OCPJP 8考试,目前我这个考试得到了我的注意,因为我不明白为什么

public class BiPredicateTest {
    public static void main(String[] args) {
        BiPredicate<List<Integer>, Integer> containsInt = List::contains;
        List<Integer> ints = java.util.Arrays.asList(1,20,20);
        ints.add(1);
        ints.add(20);
        ints.add(20);
        System.out.println(containsInt.test(ints, 20));

        BiConsumer<List<Integer>, Integer> listInt = BiPredicateTest::consumeMe;
        listInt.accept(ints, 15);

    }

    public static void consumeMe(List<Integer> ints, int num) {
        ints.removeIf(i -> i>num);
        ints.forEach(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

这显然是编译好的!但是当你运行它时,你会看到这样的异常

C:\Users\user\Documents>javac BiPredicateTest.java

C:\Users\user\Documents>java BiPredicateTest
true
Exception in thread "main" java.lang.UnsupportedOperationException
        at java.util.AbstractList.remove(AbstractList.java:161)
        at java.util.AbstractList$Itr.remove(AbstractList.java:374)
        at java.util.Collection.removeIf(Collection.java:415)
        at BiPredicateTest.consumeMe(BiPredicateTest.java:22)
        at BiPredicateTest.main(BiPredicateTest.java:17)
Run Code Online (Sandbox Code Playgroud)

我需要一些帮助来理解为什么asList方法不能与removeIf一起使用?我假设它将返回一个实现removeIf方法!的ArrayList实例.

任何答案将不胜感激.

干杯!

java arraylist stream ocpjp

14
推荐指数
1
解决办法
5182
查看次数